2010-04-28 8 views
15

Cosa succede su Activity.finish() con un AsyncTask ancora in esecuzione in background?Cosa succede su Activity.finish() con AsyncTask ancora in esecuzione in background?

Esegue appena l'attività fuori dallo Stack attività, ma attende di distruggere l'oggetto Activity fino a quando non viene completato completamente AsyncTask (poiché AsyncTask è una classe interna della mia attività)?

Inoltre, si comporterebbe in modo diverso se AsyncTask fosse una classe pubblica non interna che non contenesse riferimenti all'istanza dell'attività?

risposta

11

Ho provato la stessa cosa con il thread e la mia osservazione è che continua a far girare il thread.

+17

Sì, il 'AsyncTask' continuerà a funzionare fino al completamento. Si manterrà su un riferimento all '"Attività", mantenendo l'attività "da raccolta dei dati inutili" a meno che non si tratti di una classe interna statica o di una classe completamente indipendente che non ha alcun riferimento all' "Attività" o qualsiasi cosa che rimandi a la 'Attività' (ad esempio,' Vista'). – CommonsWare

+0

@CommonsWare ma poi, cosa succede se uno dei metodi 'AsyncTask' che viene eseguito sul thread dell'interfaccia utente viene richiamato e manipola le visualizzazioni dell'interfaccia utente, richiamando i metodi di Activity come' findViewById (R.id.something_in_the_activity_layout) '? Funziona ancora o fallisce silenziosamente? –

+0

@GianniCostanzi: È impossibile rispondere in astratto, mi dispiace. – CommonsWare

Problemi correlati