2012-03-21 46 views

回答

56

您的AsyncTask中的某處您想要通過您的活動。然後你會將這個參考文獻保存在一個弱引用中。然後,您可以在onPostExecute中解除引用並再次使用它。

類成員:

WeakReference<Activity> weakActivity; 

某處AsyncTask,大概無論是構造或onPreExecute

weakActivity = new WeakReference<Activity>(activity); 

onPostExecute

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

不錯,它確實幫助了感謝 – 2016-06-16 09:03:52

+1

'activity'仍然是無效的參考i f GC沒有及時啓動。如果我錯了,請糾正我。 – q126y 2016-06-30 15:41:08

1

這裏是存儲上下文的WeakReference的一個例子。

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

現在我們可以使用這個weakReference做Activity/Context相關的工作。