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.
Ich denke, Sie sollten es ignorieren und tun Sie es mit SharedPreferences. Es ist einfach und macht den Prozess schnell. –
Warum können Sie keine gemeinsamen Einstellungen verwenden? Es funktioniert gut für diese Art von Dingen. –