Ich habe eine App, eine einzelne Aktivitäts-App mit Fragmenten.
Der übliche Anwendungsfall für diese App ist, dass Sie es starten und das Telefon weglegen und hin und wieder, Sie gehen zurück zum Telefon und fügen Sie einige Daten ein ... Es ist eine Logging-App, Sie tun etwas und Fügen Sie Ihre Ergebnisse in die App ein ...
Ich habe das Problem, dass meine Aktivität hin und wieder zerstört wird und mit einem leeren Bündel neu erschaffen wird ... (Meistens ist das nicht der Fall, aber hin und wieder passiert das ...) . Meine App startet manchmal einen Dienst, selbst dieser Dienst wird in diesem Fall getötet ...
Das bedeutet, dass das System meine App getötet hat, oder? Wie kann ich das vermeiden?
Ich muss die Benutzerdaten und die aktuellen Top-Fragmente behalten ... Und sie werden im Bundle gespeichert und alles funktioniert, solange ihre Zustände und die Daten gespeichert werden ...
Übrigens ist meine Aktivität immer die TOP-AKTIVITÄT, nur dass der Bildschirm oft ausgeht ... Ich möchte meine Aktivität nur so lange am Leben halten, bis der Benutzer sie mit der Zurück-Taste verlässt ... Oder zu rette den Zustand zuverlässig
WICHTIGER HINWEIS
onSaveInstance funktioniert nicht immer (es ist nicht Teil des Lebenszyklus und daher nicht garantiert aufgerufen werden) ... es funktioniert nur die meiste Zeit ... Ich brauche einen Weg, um das funktioniert immer ... Wenn Android meine App tötet ...
Sie möchten Android nicht daran hindern, Ihre App zu beenden. Sie möchten den Zustand Ihrer App wiederherstellen. Dann wird der Benutzer nie bemerken, dass die App zerstört wurde, und der Nutzer profitiert immer noch von einer App, die zerstört wurde, wenn sie nicht verwendet wurde.
Wenn du das wirklich willst, benutze einen Wakelock. Dies wird die Batterie des Anwenders entleeren, also denke ich zweimal darüber nach, bevor ich das umsetze ... Info unter Wie verhindere ich, dass ein Android-Gerät programmgesteuert in den Ruhezustand wechselt?
Prüfen Sie dazu, welche Informationen im Paket benötigt werden, und bewahren Sie diese Informationen mit der onSaveInstanceState(bundle:Bundle)
-Methode auf, damit Sie sie in onCreate(sameBundle:Bundle)
wiederverwenden können.
Weitere Informationen finden Sie in der Google-Dokumentation unter Speichern Sie Ihren Aktivitätsstatus und < a href="http://developer.android.com/training/basics/activity-lifecycle/recreating.html#RestoreState"> Stelle deinen Aktivitätsstatus wieder her .
Wie in @ comm85 in den Kommentaren angegeben, ist es nicht garantiert, dass die Methode onSaveInstanceState
aufgerufen wird, da sie nicht Teil des Lebenszyklus ist. Umgehung hierfür ist die Verwendung des Hooks onPause
lifecycle, um sicherzustellen, dass Ihre Daten gespeichert werden.
Weitere Informationen finden Sie unter Android: onSaveInstanceState wird nicht aus der Aktivität aufgerufen
Ich hatte ein ähnliches Problem, ich kam zu diesem Post bei der Suche nach einer Lösung, Sie müssen mit dem Manifest spielen, um dies zu erreichen und auch zu verstehen, was genau Aktivität ist, in Android-Ökosystem,
In Android-Aktivität ist eine Aufgabe, die eine vordefinierte Arbeit hat.
Ich habe viel in der Dokumentation gegraben, ich habe festgestellt, dass wir Aktivität auf zwei Arten konfigurieren können,
wenn Sie für die Aktivität im Manifest als
angeben %Vor%und führen Sie den folgenden Anwendungsfall
ausAktivität gibt Start ein - & gt; Pause - & gt; stop - & gt; Lebenslauf, es kommt nicht in OnDestroy Methode.
falls nicht erwähnt
%Vor%für denselben Anwendungsfall
Aktivität gibt Start ein - & gt; Pause - & gt; stop - & gt; zerstören, und wenn Sie die Aktivität aus dem Backstack auswählen
Die Aktivität ruft resume- & gt; create- & gt; start
aufWenn Sie beim Start einer Aktivität einen Dienst / eine Aufgabe ausführen möchten, der ausgeführt wird, wenn sich die Anwendung im Backstack befindet, müssen Sie dies in der onCreate-Methode starten und sie bei onDestroy beenden, indem Sie Ihre Aktivität im Manifest als persistent angeben.
Ich hoffe, dass meine obige Lösung anderen helfen kann, die wegen des gleichen Problems hier ankommen
Tags und Links android android-activity fragment android-lifecycle