2016-04-09 18 views
0

Ich möchte den Status meiner App speichern und wiederherstellen, wenn der Benutzer zu meiner App zurückkehrt. Bisher habe ich gelesen, dass ich SharedPreferences dafür nicht verwenden sollte, weil das für Vorlieben ist; noch sollte ich das savedInstanceState Bundle verwenden, weil das unsicher ist.Wie kann ich den Status meiner Android-App speichern?

Die vorgeschlagene Möglichkeit besteht darin, Daten in OnPause in einer Datenbank oder Datei zu speichern (was in meinem Fall ausreicht) und in OnResume wiederherzustellen. Allerdings ergaben sich zwei Fragen zu diesem Ansatz:

  1. Die App kann nur über die MainActivity eingegeben werden, so dass ich denke, ich den Zustand in seiner onResume Methode wiederherzustellen. Der Benutzer kann jedoch meine App an einem beliebigen Ort verlassen. Bedeutet das, dass ich den Status meiner App in den OnPause-Methoden aller Aktivitäten in meiner App speichern soll?

  2. Wenn ich den Lebenszyklus der Aktivitäten richtig verstanden habe, werden OnPause und OnResume auch aufgerufen, wenn der Benutzer durch die Aktivitäten in meiner App navigiert. Das Speichern und Wiederherstellen ist während der Navigation nicht erforderlich. Ich möchte den Status nur speichern, wenn der Benutzer meine App verlässt und die wiederhergestellten Apps wiederherstellt. Oder sollte ich das einfach ignorieren und viel speichern und wiederherstellen?

+0

Ich denke, Sie sollten es ignorieren und tun Sie es mit SharedPreferences. Es ist einfach und macht den Prozess schnell. –

+1

Warum können Sie keine gemeinsamen Einstellungen verwenden? Es funktioniert gut für diese Art von Dingen. –

Antwort

3

Bisher habe ich gelesen habe, dass ich nicht SharedPreferences dafür verwenden sollte, denn das ist für Vorlieben des

Am Ende sind Sie willkommen SharedPreferences zu verwenden, was Sie wollen . Sie sind optimiert für Benutzereinstellungen.

noch sollte ich die savedInstanceState Bundle, denn das

unsicher ist nur für select scenarios Es ist. Es dient dazu, einen teilweise ausgefüllten Formularwert für den Benutzer beizubehalten, wenn der Benutzer zum Beispiel ein wenig abgelenkt wird. Es ist keine Langzeitspeicherlösung.

Die vorgeschlagene Möglichkeit besteht darin, Daten in OnPause in einer Datenbank oder Datei zu speichern (was in meinem Fall ausreicht) und in OnResume wiederherzustellen.

Es gibt viele Szenarien und Lösungen zum Speichern von Daten, abhängig von der Art der Daten und der Benutzerinteraktion. Was Sie in einer Chat-App mit Chat-Nachrichten tun, die der Benutzer eingibt und die Sie vom Chat-Server erhalten, ist sehr anders als das, was Sie in einem Textverarbeitungsprogramm tun. Das wird sehr anders als das, was Sie in einem Spiel tun ganz anders als das, was man in einem Streaming-Media-Player zu tun, usw.

die App kann nur über die MainActivity

, die falsch ist, eingegeben werden, wenn Sie ganz bestimmte Schritte unternehmen, um dies durchzusetzen. Wenn sich der Nutzer in Ihrer App befindet und dann zu einer anderen App wechselt (z. B. HOME drückt), wird der Prozess Ihrer App möglicherweise beendet, während sich Ihre App im Hintergrund befindet. Wenn der Benutzer jedoch recht schnell (z. B. innerhalb einer halben Stunde) zu Ihrer App zurückkehrt, z. B. über den Übersichtsbildschirm/die Liste der letzten Aufgaben, versucht Android, den Benutzer in den Zustand zurückzuversetzen, in dem er zuletzt war. Was könnte eine Ihrer Aktivitäten sein?

also denke ich, dass ich den Zustand in seiner OnResume-Methode wiederherstellen.

Jede Aktivität ist für ihren eigenen Status verantwortlich. Ein Teil dieses Zustands kann gut geteilt werden (z. B. der Singleton-POJO-Cache-Manager). Aber eine Aktivität sollte nicht voraussetzen, dass zuvor ein Status für sie eingerichtet wurde.

Bedeutet dies, dass ich den Status meiner App in den OnPause-Methoden aller Aktivitäten in meiner App speichern sollte?

Auch das hängt sehr davon ab, was Sie in Ihrer App tun. Die Antwort kann sein: "Speichere den Zustand, wenn der Benutzer die Taste drückt" oder "Speichere den Zustand, wenn der Benutzer wischt" oder "Speichere den Zustand, wie wir ihn von der eingehenden MQTT-Nachricht vom Server erhalten" oder was auch immer.

Ich möchte nur den Zustand speichern, wenn der Benutzer meine Anwendung verlässt und es wieder, die er zurückkehrt

IMHO, möchten Sie den Zustand speichern, wenn der Zustand ändert, im Allgemeinen. "Wiederherstellen" ist bei entsprechender Zwischenspeicherung sehr schnell, während die Anwendung aktiv ist, und ist nur langsam, wenn entweder viele große Daten vorhanden sind (und Ihr Cache beginnt, Werte auszugeben) oder Ihr Prozess beendet und neu gestartet wurde.

Verwandte Themen