Ich habe eine LocalBroadcastReceiver
und ich bin unregistering
es in meinem ondestroy()
.Wird OnDestroy nur aufgerufen, wenn Sie explizit end() aufrufen ?? oder gibt es Ausnahmen?
Jetzt lese ich über ondestroy()
in diesen beiden erwähnten SO beantwortet is-ondestroy-not-always-called und why-implement-ondestroy-if-it-is-not-guaranteed-to-be-called und sowie in Androi Docs dass
onDestroy wird aufgerufen, wenn Sie explizit beenden() aufrufen;
Aber warum in meinem Fall habe ich nicht finish()
rufe mich aber noch ondestroy()
genannt, jedes Mal immer in all meinen Android-Geräten. Auch nach euch, wo sind die Fälle wo ondestroy()
nicht abgerufen werden.
Auch wenn Android meine App (aufgrund von weniger Speicher) killt, muss ich mir keine Sorgen machen, da Android meine ganze App umbringt, so dass der Empfänger letztendlich getötet wird. (Also wird es keine geben Speicherleck).
Also für meinen Anwendungsfall welche Fälle dort sind, wo ondestroy()
nicht aufgerufen wird.
Für den ersten Fall, wenn meine App abstürzt, glaube ich nicht, dass ich meinen Empfänger abmelden muss, da die App bereits geschlossen ist und wenn der Nutzer es erneut antippt, wird der Speicher wieder meiner App zugewiesen. –
Für den zweiten Fall ist es das gleiche wie der Fall, den ich über weniger Speicher oder nicht erwähnte? –
@SudhanshuGaur: "Für den ersten Fall ..."- Dies hängt sehr davon ab, wie Ihre App unbehandelte Ausnahmen behandelt." Für den zweiten Fall ... "- Ja, das ist der Teil des Szenarios, den Sie über Android erwähnt haben, der Ihren Prozess wegen zu geringer Speicherbedingungen beendete , Android wird sich die Zeit nehmen, 'onDestroy()' auf Ihren laufenden Aktivitäten aufzurufen. Manchmal wird es nicht, wie es die Zeit nicht dauern kann. – CommonsWare