我可以确定对活动的引用是否有效吗?

时间:2012-08-06 19:35:41

标签: android android-asynctask android-activity

如果Activity已被销毁,但AsyncTask仍然有对该对象的引用,是否有任何方法可以直接查询引用(已销毁)的活动以确定{ {1}}仍然有效?

2 个答案:

答案 0 :(得分:3)

在Activity的onDestroy()方法中,设置一个标志以指示活动已被销毁。

此外,在AsyncTask中向WeakReference添加Activity而非正常引用。

onPostExecute()的{​​{1}}方法中,如果AsyncTask仍然有值,则活动仍然有效,而WeakReference本身仍设置为假的。

答案 1 :(得分:0)

尝试将WeakReference保留在您的活动中。

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