2016-09-26 2 views
2

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

+1

Sie können mit 'finally' Block Ihre Ressource schließen. – Rustam

+0

In welcher Lebenszyklus-Methode "endlich" blockieren? – Omkar

+0

https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html – user1506104

Antwort

1

sollten Sie statt onStop, onDestroy verwenden. Es wird garantiert angerufen werden.

1

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 
} 
+0

'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

1

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

Verwandte Themen