2012-08-06 74 views

回答

3

在Activity的onDestroy()方法中,設置一個標誌來指示Activity已被銷燬。

此外,在AsyncTask中,將WeakReference添加到Activity而不是正常參考。

AsyncTaskonPostExecute()方法,活動仍然活着如果WeakReference仍具有值,並且Activity本身仍具有該標誌設置爲假。

+3

我在Android API中看不到任何保證,當活動有效時,對活動的弱引用將保證被保留,並且在活動被銷燬時保證弱引用被無效。你有特定的理由相信嗎? – 2012-08-06 19:59:25

+2

如果活動被釋放,弱引用很快就會被清空。這種事情只有在活動被破壞之後纔會發生,因爲這是活動生命週期的最後一步。當然,如果仍然有對該活動的引用,我已經寫過的關於這個活動的標誌將被使用,因爲弱引用仍然會指向這個活動。你可以在這裏閱讀weakReference:http://developer.android.com/reference/java/lang/ref/WeakReference.html和活動生命週期在這裏:http://developer.android.com/reference/android/app/ Activity.html – 2012-08-06 21:53:03

+5

「很快就會被忽略」..不夠好。這並不足以說明活動的狀態 – Vlad 2013-03-04 19:25:58

0

嘗試保持WeakReference爲您的活動。

WeakReference<Activity> ref = new WeakReference<Activity>(activity); 
… … … 
Activity activity = ref.get(); 
if (activity != null) { 
    // DO SOMETHING 
} 
+2

我在Android API中看不到任何保證,當活動有效時,對活動的弱引用將保證持續存在,並且在活動被銷燬時保證弱引用被無效。你有特定的理由相信嗎? – 2012-08-06 19:47:32

+1

爲了避免重複,請參閱*完整答案(http://stackoverflow.com/a/11834991/716075)* android developer *。 – StenaviN 2012-08-07 04:27:05

相關問題