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