在Apress Pro Android 4筆者說:的Android Asyntask:上下文使用弱引用,以避免設備旋轉屏幕
[...]當前正在運行的活動場景將不再是有效的設備時被旋轉。 [...]一種方法是對活動使用較弱的參考而不是硬參考[...]
但作者只是建議這一點,並沒有說明它是如何完成的。以前誰做過這個請給我舉個例子。
在Apress Pro Android 4筆者說:的Android Asyntask:上下文使用弱引用,以避免設備旋轉屏幕
[...]當前正在運行的活動場景將不再是有效的設備時被旋轉。 [...]一種方法是對活動使用較弱的參考而不是硬參考[...]
但作者只是建議這一點,並沒有說明它是如何完成的。以前誰做過這個請給我舉個例子。
您的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
}
這裏是存儲上下文的WeakReference的一個例子。
WeakReference<Context> cReference = new WeakReference<Context>(getApplicationContext());
現在我們可以使用這個weakReference做Activity/Context相關的工作。
不錯,它確實幫助了感謝 – 2016-06-16 09:03:52
'activity'仍然是無效的參考i f GC沒有及時啓動。如果我錯了,請糾正我。 – q126y 2016-06-30 15:41:08