2016-05-06 4 views
1

In meiner Cross-Plattform-App gespeichert Ich Anwendungseigenschaften in der folgenden Art und Weise speichern:Xamarin.Forms Anwendungseigenschaften zwischen den Sitzungen nicht mit Android

Application.Current.Properties["myValue"] = "Test"; 
await Application.Current.SavePropertiesAsync(); 

ich sie dann später wieder abrufen wie folgt aus:

string myVal = Application.Current.Properties["myValue"]; 

Dies funktioniert perfekt, wenn Sie den Android-Emulator verwenden. Ich kann den Emulator schließen, und wenn ich ihn erneut starte, bleiben meine App-Daten erhalten.

Wenn ich diese App jedoch auf einem physischen Android-Gerät bereitstellen, funktioniert die Datensicherung wie erwartet, bis ich die App schließe und sie wieder öffne. An dieser Stelle erhalte ich einen leeren Wert. Es ist, als ob die Daten nur im Speicher (und nicht in der Datei) gespeichert werden.

Darüber hinaus funktioniert die iOS-Version der exakt gleichen App einwandfrei. Wenn ich die App öffne, wurden alle vorherigen Werte gespeichert und ich kann sie abrufen.

Was mache ich bei der Android-Version falsch? Gibt es eine Android-Einstellung, Berechtigung oder Option, die aktiviert werden muss, damit die Werte zwischen App-Sitzungen gespeichert werden, wenn sie tatsächlich auf einem Telefon bereitgestellt werden?

Antwort

0

Ich erinnere mich nicht genau, welcher Teil davon das Problem gelöst, aber als ich die Anweisungen befolgte, um die Android-Anwendung für die Freigabe von Anfang bis Ende vorzubereiten, ging das Problem weg. Das Problem trat auf, wenn Debug-Builds auf einem Android-Gerät verwendet wurden.

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_1_-_preparing_an_application_for_release/

Der Link enthält die vorgeschlagenen Einstellungen für das Android-Projekt, wenn zum Gerät freizugeben. Befolgen Sie diese Anweisungen, um das Problem zu beheben.

0

In VS müssen Sie die Option aktivieren:

Preserve Anwendungsdaten/Cache auf dem Gerät zwischen

setzt können Sie dies unter Extras finden> Optionen> Xamarin> Android-Einstellungen.

+1

Danke - nur um zu bestätigen - das Problem tritt auf, wenn tatsächlich auf einem Android-Gerät bereitgestellt (über Google Play usw.).Die App verhält sich beim Verwenden des Emulators wie erwartet. Daten werden zwischen Sitzungen gespeichert. Ich habe meine Frage aktualisiert, um dies zu klären. –

+1

Wenn Sie dies nicht lösen können, werfen Sie einen Blick auf [Xamarin.Plugins.Settings] (https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings). – Nfear

0

Ich weiß nicht, ob dies in den neuesten Updates von Xamarin Forms gestoppt wurde, sind die Daten verfügbar, bis die Anwendung ähnlich wie Sitzung ausgeführt wird, aber der persistente Speicher funktioniert nicht.

Die beste api, die ich für diese verfügbar halte, ist Akavache https://github.com/akavache/Akavache.

Sie können diesen Blog https://codemilltech.com/akavache-is-aka-awesome/ lesen.

aktualisieren Es ist ein Fehler in Bugzilla eingereicht: https://bugzilla.xamarin.com/show_bug.cgi?id=26444

3

Ich hatte ein ähnliches Problem, wo nur die Debug-Version Eigenschaften gespeichert. Ich denke, wir warten immer noch auf den Bugfix, und das ist die Problemumgehung on Xamarin Forms bugzilla.

Kurz gesagt: nach .Droid project settings -> Android Options -> Linker
und geben Sie/hinzufügen "System.Runtime.Serialization" Baugruppen Verknüpfung zu überspringen.

Verwandte Themen