Wird onPause () oder onStop () auch dann aufgerufen, wenn das Telefon wegen fehlender Stromversorgung ausfällt?

8

Wenn ich zum Beispiel einige sehr wichtige Daten behalten muss, die der Benutzer in meiner App bearbeiten kann, sollte ich sie jedes Mal speichern müssen, wenn der Benutzer solche Daten ändert, oder ist es in Ordnung, wenn ich es in onPause () speichern würde , onStop () oder onDestroy () Methoden?
Kann irgendwie -Anwendung enden, ohne dass eine dieser Methoden aufgerufen wird? (Zum Beispiel wenn die Batterie leer ist)

    
Austin Johnson 28.10.2016, 11:09
quelle

4 Antworten

2

Dies ist in onDestroy () sicher nicht möglich. Laut der Dokumentation :

  

Es gibt Situationen, in denen das System die Aktivitäten einfach abbricht   Hosting-Prozess, ohne diese Methode (oder andere) in ihm zu nennen, so   es sollte nicht verwendet werden, um Dinge zu tun, die dazu bestimmt sind, in der Umgebung zu bleiben   nachdem der Prozess weg ist.

Die Anwendung kann also beendet werden, ohne eine der Lebenszyklusmethoden aufzurufen.

    
Wilder Pereira 28.10.2016, 11:17
quelle
2

In diesem Szenario können Sie beim Herunterfahren des Telefons die Aktion ACTION_SHUTDOWN verwenden. Weitere Informationen hier . Für alle anderen Fälle sollte onPause die Arbeit machen. Auch im angegebenen Link gibt es eine Anweisung, dass onPause aufgerufen wird, wenn die App in FG ist.

  

Apps müssen normalerweise nicht damit umgehen, seit dem Vordergrund   Aktivität wird ebenfalls angehalten.

Wenn es jedoch nicht so teuer ist, würde ich mit dem Speichern von Daten nach dem Bearbeiten fortfahren.

    
Drez 28.10.2016 11:22
quelle
2

Gemäß der Dokumentation des Android-Aktivitätslebenszyklus, onPause heißt wenn eine Aktivität in den Hintergrund tritt, aber (noch) nicht getötet wurde.

Daher finden Sie in den meisten Android-Dokumentationen und Beispielcodes onPause zum Speichern aller persistenten Zustände, die die Aktivität bearbeitet, um dem Benutzer ein "Edit in Place" -Modell zu präsentieren und sicherzustellen, dass nichts verloren geht Es gibt nicht genug Ressourcen.

In Ihrem Anwendungsfall müssen Sie lediglich onPause für Ihre Activity implementieren und einen Code schreiben, um den Aktivitätsstatus zu speichern ( EditText content oder andere laufende Benutzerinteraktionen). Das Android-System speichert den Aktivitätsstatus, den du immer in onCreate deiner Aktivität erhalten kannst, wenn android deine Aktivität das nächste Mal startet.

    
AADProgramming 28.10.2016 11:37
quelle
1

In diesem Fall überprüfen Sie bitte Ihre Telefonaktivität über die Debug-Schnittstelle, einige der Telefone beenden Ihre Anwendung. Dies wird erzwungen.

    
Volkan UGUR 28.10.2016 11:14
quelle