Réponses:
Quitte-t-il immédiatement ou termine-t-il la fonction à partir de laquelle il a été appelé?
La méthode qui a appelé finish()
s'exécutera jusqu'à la fin. L' finish()
opération ne commencera même pas tant que vous n'aurez pas rendu le contrôle à Android.
Chaque événement de cycle de vie comme onCreate
, onResume
, onPause
.... onDestroy
d'une activité est toujours appelée sur un seul thread - Le « fil conducteur ».
En bref, ce fil est soutenu par une file d'attente dans laquelle tous les événements d'activité sont publiés. Ce thread peut exécuter tous ces événements dans l'ordre d'insertion.
Si vous appelez finish()
dans l'un des rappels du cycle de vie comme onCreate()
... un message "terminer" sera ajouté à cette file d'attente mais le thread n'est pas libre de choisir et d'exécuter l'action "terminer" jusqu'à ce que la méthode en cours d'exécution retourne, c'est-à-dire que Thread est libéré de tâche courante.
ondestroy()
est le dernier appel que vous recevez avant que votre activité ne soit détruite.
Cela peut se produire soit parce que l'activité se termine (quelqu'un l'a appelée finish()
, soit parce que le système détruit temporairement cette instance de l'activité pour économiser de l'espace. Vous pouvez faire la distinction entre ces deux scénarios avec la isFinishing()
méthode).
S'il y a deux activités A et B. Et votre flux va de A> B; et B = A appelle finish()
.
Ensuite,
La méthode à partir de laquelle vous avez appelé finish()
s'exécutera comme Mark l'a mentionné. Et le flux des rappels sera comme suit -
onPause()
de activity A
onRestart()
> onStart()
> onResume()
De l' activité Bfinish()
de activity A
; seul onStop()
de Activity A
sera appelé ici. Bien que, dans ce cas, où nous avons appelé à finish()
partir Activity A
; Donc onStop()
et les onDestroy()
deux seront nécessaires activity A
.