2013-07-25 14 views
18

Nella classe Applicazione Android è possibile registrare/annullare la registrazione di ActivityLifecycleCallbacks, che consente di monitorare gli eventi del ciclo di vita di Attività nella propria applicazione in un unico punto (se lo si desidera).Qual è il modo corretto di annullare la registrazione dei callback del ciclo di vita delle attività?

Dove è il posto giusto per chiamare unregisterActivityLifecycleCallbacks? Sto registrando in onCreate, e pensavo che onTerminate sarebbe il posto giusto proprio dal nome del metodo, ma la documentazione per dire onTerminate():

Questo metodo è per l'uso in ambienti di processo emulati . Non sarà mai essere chiamato su un dispositivo Android di produzione, in cui i processi vengono rimossi semplicemente uccidendoli; nessun codice utente (incluso questo callback) è eseguito quando lo si fa.

Non vedo nessun altro metodo nella classe Application in cui viene eseguito un callback di tipo "shutdown". Hai anche bisogno di annullare la registrazione?

+0

Sono davvero curioso di sapere cosa stai cercando di ottenere. Per quanto riguarda l'annullamento della registrazione, non è necessario poiché, se la classe dell'applicazione sta morendo, il processo sta morendo e quindi si annulla la registrazione, presumibilmente dopo la chiamata a super(), alcuni microsecondi prima che il processo decida. Immagino che lo scopo di annullare la registrazione è quello di consentire di modificare i comportamenti in fase di esecuzione. – Simon

risposta

18

Simon aveva ragione su questo. registerActivityLifecycleCallbacks non richiede una chiamata corrispondente a unregisterActivityLifecycleCallbacks. Come descritto in this SO question, non è possibile rilevare quando l'applicazione viene uccisa. Quindi non esiste un luogo "logico" per annullare la registrazione della richiamata. E anche se ci fosse, l'istanza Application viene uccisa dopo lo l'ultima azione Activity si svolge e l'uccisione del tuo Application uccide l'elenco mActivityLifecycleCallbacks che conserva comunque il riferimento alla richiamata.

TL; DR - Non preoccuparti di chiamare unregisterActivityLifecycleCallbacks, è presente solo se si desidera interrompere il tracciamento delle azioni Activity durante il normale ciclo di vita di Application.

Problemi correlati