我有一个关于 android 中这种简单频繁发生的情况的问题。
我们有一个 main 活动,我们调用一个 AsyncTask 以及 mainactivity 的引用,以便 AsyncTask 可以更新 MainActivity 上的视图。
我会将事件分解为步骤
- MainActivity 创建一个 AyncTask,将其引用传递给它。
- AysncTask ,启动它的工作,例如下载十个文件
- 用户更改了设备的方向。这会导致 AsyncTask 中出现孤立指针
- 当 AsyncTask 完成并尝试访问活动以更新状态时,它会因为空指针而崩溃。
上述解决方案是按照“Pro Android 4”一书的建议在 AsyncTask 中保留 WeakReference
WeakReference<Activity> weakActivity;
in method onPostExecute
Activity activity = weakActivity.get();
if (activity != null) {
// do your stuff with activity here
}
这如何解决这种情况?
我的问题是,如果我的 asynctask 正在下载十个文件,并且在完成 5 后重新启动活动(由于方向更改),那么我的 FileDownloadingTask 是否会再次被调用?
最初调用的先前 AsyncTask 会发生什么?
谢谢,我为这个问题的长度道歉。