2013-04-08 11 views
6

Se l'attività A avvia l'attività B per risultato, ho avuto l'impressione che il metodo onStop dell'attività B sia chiamato prima del metodo di attività onActivityResult A. Perché non è così? L'ho appena testato con una variabile statica impostata in B.onStop ma quando la lessi in A.onActivityResult la variabile è valida fino a null.ciclo vitale Android onActivityResult vs onStop

+2

Si prega di indicare nella documentazione dove è descritto il comportamento previsto. – CommonsWare

+0

"il metodo onStop dell'attività B viene chiamato prima del metodo onActivityResult di attività A" - questo è il comportamento predefinito e anche questo è previsto. Qual è la tua opinione contraria? –

+2

@CommonsWare: beh, non tutto deve essere documentato. Immagino di dover prima lasciare l'attività B prima di tornare all'attività A. Sembra solo logico al riguardo. – learner

risposta

3

Penso che quello che vuoi fare è chiamare , tuttavia, non si vuole fare troppo lì. Here is what the docs say:

protetta onPause void() Aggiunto a livello di API 1

Chiamato come parte del ciclo di vita di attività quando un'attività sta in secondo piano, ma non è (ancora) stati uccisi. La controparte di onResume().

Quando l'attività B viene lanciato davanti l'attività A, questo callback sarà essere invocato su A. B non verrà creato fino di un onPause) restituisce (in modo essere sicuri di non fare nulla lungo qui.

Questa callback è usato soprattutto per il salvataggio di qualsiasi stato persistente l'attività sta modificando, di presentare un modello di "Modifica in posizione" per l'utente e assicurandosi che nulla è perduto, se non ci sono abbastanza risorse per iniziare il nuovo attività senza prima uccidere questo. Questo è anche un buon posto per fare cose come fermare le animazioni e altre cose che consumano una notevole quantità di CPU al fine di passare alla successiva attività il più velocemente possibile, o per chiudere le risorse che sono accesso esclusivo tale come la fotocamera.

2

Penso che la tua impressione è sbagliata, onActivityResult viene chiamato prima onResume e la documentazione per onStop al http://developer.android.com/reference/android/app/Activity.html nella tabella che segue il diagramma di ciclo di attività afferma

Chiamato quando l'attività non è più visibile per l'utente, perché è stata ripristinata un'altra attività che copre questo. Questo può accadere sia perché si sta avviando una nuova attività, una già esistente viene portata davanti a questa, o questa viene distrutta.

Quindi onResume in A viene chiamato prima di onStop in B.

Problemi correlati