2012-03-21 5 views

risposta

56

Da qualche parte nel tuo AsyncTask vorrai passare la tua attività. Quindi salvi quel riferimento in un riferimento debole. Quindi puoi effettuare il download e utilizzarlo di nuovo in onPostExecute.

membro Classe:

WeakReference<Activity> weakActivity; 

Da qualche parte in AsyncTask, probabilmente o costruttore o onPreExecute:

weakActivity = new WeakReference<Activity>(activity); 

In onPostExecute:

Activity activity = weakActivity.get(); 
if (activity != null) { 
    // do your stuff with activity here 
} 
+0

bello, davvero aiutato grazie –

+1

'activity' rimarrà comunque un riferimento non valido f GC non ha calciato in tempo. Perfavore, correggimi se sbaglio. – q126y

0

Se si desidera ripristinare l'attività precedente, perché non andare su onSaveInstanceState e ripristinarlo in seguito.

controllare questo link per maggiori dettagli

Saving application state

1

Ecco un esempio di WeakReference per memorizzare un contesto;

WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext()); 

Ora possiamo usare questa WeakReference per fare Attività/Contesto lavoro relativo.