J'ai un LocalBroadcastReceiver
et je suis unregistering
dans mon ondestroy()
.OnDestroy est-il appelé uniquement si vous appelez explicitement finish() ?? ou y a-t-il des exceptions?
Maintenant, j'ai lu ondestroy()
mentionné dans ces deux réponses SO is-ondestroy-not-always-called et why-implement-ondestroy-if-it-is-not-guaranteed-to-be-called et ainsi que dans Androi Docs que
OnDestroy sera appelée si vous appelez explicitement la fin();
Mais pourquoi, dans mon cas, je ne demande pas finish()
mais toujours ondestroy()
devient appelé à chaque fois que dans tous mes appareils Android. Toujours selon vous, où sont les cas où ondestroy()
ne sont pas appelés.
Aussi, même si Android va tuer mon application (en raison de moins de mémoire) Je ne suis pas à me soucier que Android va tuer mon application tout si le récepteur sera finalement se faire tuer. (Donc, il n'y aura pas de Fuite de mémoire).
Donc pour mon cas d'utilisation quels cas sont là où ondestroy()
ne va pas être appelé.
Pour le premier cas si mon application tombe en panne alors je ne pense pas que je dois annuler mon récepteur parce que l'application est déjà fermée et lorsque l'utilisateur tape à nouveau, la mémoire sera à nouveau allouée à mon application. –
Pour le second cas est-ce le même que celui que j'ai mentionné à propos de moins de mémoire ou non? –
@SudhanshuGaur: "Pour le premier cas ..."- cela dépend beaucoup de la façon dont votre application traite les exceptions non gérées." Pour le deuxième cas ... "- oui, c'est la partie du scénario que vous avez mentionné à propos d'Android mettant fin à votre processus en raison de la mémoire insuffisante. Android va prendre le temps d'appeler 'onDestroy()' sur vos activités en cours.Pas parfois, il ne sera pas, car il ne peut pas prendre le temps – CommonsWare