Risposte:
Esce immediatamente o completa la funzione da cui è stato chiamato?
Il metodo che ha chiamato finish()
verrà eseguito fino al completamento. L' finish()
operazione non inizierà nemmeno fino a quando non restituirai il controllo ad Android.
Ogni evento del ciclo di vita come onCreate
, onResume
, onPause
.... onDestroy
di un'attività è sempre chiamato su un singolo thread - Il "filo conduttore".
In breve, questo thread è supportato da una coda in cui vengono pubblicati tutti gli eventi di attività. Questo thread può eseguire tutti questi eventi nell'ordine di inserimento.
Se stai chiamando finish()
in uno dei callback del ciclo di vita come onCreate()
... un messaggio di "fine" verrà aggiunto a questa coda ma il thread non è libero di scegliere ed eseguire l'azione "di fine" finché il metodo attualmente in esecuzione non restituisce cioè il thread viene liberato da compito corrente.
ondestroy()
è l'ultima chiamata che ricevi prima che la tua attività venga distrutta.
Ciò può accadere perché l'attività sta terminando (qualcuno l'ha chiamata finish()
, o perché il sistema sta temporaneamente distruggendo questa istanza dell'attività per risparmiare spazio. Puoi distinguere tra questi due scenari con il isFinishing()
metodo.
Se ci sono due attività A e B. E il tuo flusso va da A> B; e B = A chiama finish()
.
Poi,
Il metodo da cui hai chiamato finish()
verrà eseguito come menzionato da Mark. E il flusso di callback sarà il seguente:
onPause()
di activity A
onRestart()
> onStart()
> onResume()
Di attività Bfinish()
da activity A
; solo onStop()
di Activity A
sarà chiamato qui. Mentre, in questo caso, in cui abbiamo chiamato finish()
da Activity A
; Quindi, onStop()
e onDestroy()
entrambi saranno chiamati per activity A
.