In meinem Android App führe ich einige ressourcenintensive Operationen. Ich muss diese immer schließen/aufräumen, bevor die App beendet wird. Wie ich verstehe, onStop()
/onDestroy()
Lebenszyklus Methoden nicht garantiert, um während des Töten einer App ausgeführt werden. Daher ist es nicht vertrauenswürdig, Close/Cleanup-Operationen in diese Methoden zu setzen. Was sind die besten Alternativen, die Android bietet, um diese Funktionalität zu erreichen? Vielen Dank.Performing obligatorischen Aufräumarbeiten vor Abtötung von App
Antwort
sollten Sie statt onStop, onDestroy
verwenden. Es wird garantiert angerufen werden.
Ich schlage vor, onDestroy() in Ihrer Hauptaktivität zu überschreiben, um den Code auszuführen, wenn Ihre App zerstört wird, oder onStop(), um den Code auszuführen, wenn der Benutzer Ihre App beendet.
onDestroy() wird aufgerufen, bevor die Aktivität zerstört wird. Sie kann entweder aufgerufen werden, weil die Aktivität beendet wird (jemand namens finish()) oder weil das System die Instanz der Aktivität zerstört, um Platz zu sparen. Diese beiden Szenarien können mit der isFinishing() -Methode unterschieden werden.
auf der anderen Seite OnStop() aufgerufen wird, wenn die Aktivität nicht mehr für den Benutzer sichtbar ist. Dies kann passieren, weil es zerstört wird oder weil eine andere Aktivität wieder aufgenommen wurde. Folgen Sie entweder onRestart(), wenn die Aktivität zurückkommt, um mit dem Benutzer zu interagieren, oder onDestroy(), wenn diese Aktivität aufhört.
@Override
protected void onStop() {
super.onStop();
// The activity is no longer visible i.e is it stopped now
}
@Override
protected void onDestroy() {
super.onDestroy();
//It is about to destroyed
}
'OnStop()' und 'onDestroy' nicht bis zum Ende ausgeführt ist garantiert. Sie können nur einen Teil der Methode ausführen. Nach dem Töten der App kann der Android-App-Prozess jederzeit beendet werden. – Omkar
onPause() und OnStop() nicht aufgerufen werden, wenn finish() aus der onCreate() -Methode aufgerufen wird. Dies kann zum Beispiel auftreten, wenn Sie während onCreate() einen Fehler feststellen und als Ergebnis finish() aufrufen. In diesem Fall wird jedoch keine Bereinigung ausgeführt, die Sie in onPause() und onStop() erwartet haben.
Obwohl onDestroy() der letzte Rückruf im Lebenszyklus einer Aktivität ist, ist es erwähnenswert, dass dieser Rückruf nicht immer aufgerufen wird und nicht darauf angewiesen werden sollte, Ressourcen zu zerstören. Es ist besser, wenn die Ressourcen in onStart() und onResume() erstellt und in onStop() bzw. onPause zerstört werden.
finden Sie im Android-Entwickler für weitere Informationen über die Aktivität Lebenszyklus. https://developer.android.com/training/basics/activity-lifecycle/starting.html
- 1. Performing Hotbackups von Gogs
- 2. Mehrere Aufräumarbeiten in einer Pipeline
- 3. Performing facebook Oauth von meiner App in android Studio 1.5.1
- 4. Welche Art von Aufräumarbeiten sollte ich neben dealloc in einer iPhone App durchführen?
- 5. PerformException: Fehler performing 'Klick'
- 6. Performing Trigonometrie in Javascript
- 7. Core Data Performing
- 8. Performing dplyr auf Teilmenge von Spalten mutieren
- 9. JSDoc - Angabe der obligatorischen Parametersyntax
- 10. Swift verwenden, wenn Performing Blockoperationen
- 11. Performing set_difference auf ungeordnete Sätze
- 12. PayUBiz - Android: bekommen obligatorischen Param Hash fehlt
- 13. ASP.NET MVC Passwort-Validator warnt nicht vor einigen obligatorischen Anforderungen auf der Client-Seite?
- 14. Ausführen eines Bash-Skript mit obligatorischen Argumente
- 15. Performing gleichzeitige fits/Minimierung mit scipy.optimise.minimise()
- 16. Performing Loops auf der Liste der Raster
- 17. Performing Logfolge als Teil der Koch Rezept
- 18. Firefox - lokal modifizieren Addon und obligatorischen Gesang
- 19. bash getopts mit mehreren und obligatorischen Optionen
- 20. Performing Art Gleichheit in Vorlage Haskell
- 21. Performing Vereinigung von zwei Arrays mit benutzerdefinierten Regeln
- 22. Performing Wähler am Anfang/Ende der Laufschleife
- 23. Performing regex auf Dateien im Verzeichnis gespeichert
- 24. Performing partielles Updates mit KnockoutJS Mapping-Plugin
- 25. Performing bitweise nicht auf einem Byte
- 26. Performing Arithmetik auf Ruby-String-Variable
- 27. Filtern von Ergebnissen von Observable vor Abonnieren in Angular App
- 28. Wie verschleiern Web-App vor der Veröffentlichung?
- 29. Ihre App glInvalidateFramebuffer vor der Vorlage renderbuffer
- 30. Automatisches Recyclen des App-Pools vor dem Debuggen von .net
Sie können mit 'finally' Block Ihre Ressource schließen. – Rustam
In welcher Lebenszyklus-Methode "endlich" blockieren? – Omkar
https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html – user1506104