web-dev-qa-db-fra.com

Android: Finira () TOUJOURS appeler onDestroy ()?

Question simple: pouvez-vous être sûr que finish() appellera onDestroy()? Je n'ai trouvé aucune confirmation à ce sujet.

23
Xander

Question simple: pouvez-vous être sûr que finish () appellera onDestroy ()?

Tout d'abord, cette réponse suppose que vous faites référence à la classe Activity d'Android et à sa méthode finish() et onDestroy() méthode de cycle de vie.

Deuxièmement, cela dépend de votre définition de "sûr":

  • Votre processus peut se terminer entre finish() et onDestroy(), pour des raisons indépendantes de ce qui déclenche l'appel à finish()

  • Un fabricant de périphérique ou un modificateur ROM pourrait introduire des changements délicats qui briseraient la connexion entre finish() et onDestroy()

  • La batterie pourrait se décharger entre finish() et onDestroy()

  • Etc.

Troisièmement, finish() n'appelle pas onDestroy(). Vous pouvez le constater en lisant le code source . finish() habituellement déclenche un appel à onDestroy().

De manière générale, finish() finira par appeler onDestroy().

46
CommonsWare

Non, vous ne pouvez pas en être sûr!

L'appel de finish () déclenche généralement onDestroy () selon le cycle de vie de l'activité, mais vous ne pouvez pas vous y fier. Surtout pas pour sauvegarder vos données. Documentation dit clairement

do not count on this method being called as a place for saving data! 
6
Aniket Thakur