【发布时间】:2012-08-06 19:35:40
【问题描述】:
如果Activity已被销毁,但AsyncTask仍具有对该对象的引用,有没有办法直接查询引用(已销毁)的活动以确定Activity是否仍然存在有效的?
【问题讨论】:
标签: android android-asynctask android-activity
如果Activity已被销毁,但AsyncTask仍具有对该对象的引用,有没有办法直接查询引用(已销毁)的活动以确定Activity是否仍然存在有效的?
【问题讨论】:
标签: android android-asynctask android-activity
在Activity的onDestroy()方法中,设置一个标志,表示Activity被销毁了。
此外,在AsyncTask 中添加WeakReference 到Activity,而不是普通引用。
在AsyncTask 的onPostExecute() 方法中,如果WeakReference 仍然有值,并且Activity 本身的标志仍然设置为false,则Activity 仍然存在。
【讨论】:
尝试将WeakReference 保留在您的活动中。
WeakReference<Activity> ref = new WeakReference<Activity>(activity);
… … …
Activity activity = ref.get();
if (activity != null) {
// DO SOMETHING
}
【讨论】: