活动启动AsyncTask,完成后,此任务需要检查此活动是否已销毁并收集垃圾。我以为WeakReference帮我解决了这个问题。但即使我旋转屏幕并且活动被破坏,我仍然不会为空。我做错了什么?
class MyAsyncTask extends AsyncTask<String,String,String> {
WeakReference<ActivitySecond> sactivity;
MyAsyncTask(ActivitySecond a)
{
sactivity = new WeakReference<>(a);
}
@Override
protected String doInBackground(String... strings) {
try {
Thread.sleep(5000);
}
finally {
return "Ok";
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (sactivity!=null)
{
ActivitySecond activity = sactivity.get();
if (activity!=null)
Toast.makeText(activity,s,Toast.LENGTH_LONG).show();
}
}
}
答案 0 :(得分:1)
如果除了弱引用之外没有对该对象的其他引用,则允许该对象被垃圾收集。
但实际完成后不保证。