Se si avvia un AsyncTask all'interno di un'attività e ruotate il dispositivo, l'attività sarà distrutto e sarà creata una nuova istanza.
Analogamente, se l'utente naviga verso un'altra attività, l'attività corrente verrà distrutta o passerà nello stack di attività in background e la nuova attività sarà in primo piano.
Ma AsyncTask non morirà. Continuerà a vivere fino al suo completamento. E quando si completa, AsyncTask non aggiornerà l'interfaccia utente della nuova attività. Infatti aggiorna la precedente istanza dell'attività che non viene più visualizzata. Ciò può portare a un'eccezione del tipo java.lang.IllegalArgumentException: Visualizza non collegata a window manager se si utilizza, ad esempio, findViewById per recuperare una vista all'interno dell'attività.
fonte
2015-06-27 05:33:34
"al termine, AsyncTask non aggiornerà l'interfaccia utente della nuova attività, infatti aggiorna la precedente istanza dell'attività che non è più visualizzata" - Se la nuova attività è di breve durata, come mantenere la vecchia istanza dell'attività in vita? – Jaydev
@JaydevKalivarapu Non chiamare la fine della vecchia attività quando avviare una nuova attività. –
In tal caso, quando torno alla vecchia attività utilizzando Intent, utilizzo l'istanza esistente stessa? – Jaydev