【发布时间】:2016-03-29 15:20:54
【问题描述】:
我有许多 AsyncTask 实例正在从服务器下载一些不同的内容。它们在执行器上运行:
final GetStationsTask getStationsTask = new GetStationsTask();
getStationsTask
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, URL_STATIONS);
目前我有 3 个 AsyncTask 的子类,但这个数字不会保持不变。我还在为由于不同原因未完成的任务实施某种重试,如果至少有一个任务未正确完成(未收到数据),我想从头开始下载所有内容:
// mHandler = new Handler(); // an instance variable
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (!allDataSet()) {
// here I want to cancel the tasks that are still running
// and rerun all of them
}
}
}, 30000); // I give all the tasks 30 seconds to complete
为此,我想我需要知道当前正在运行哪些任务,哪些任务已正确完成,哪些已取消,因为如果所有任务都重新启动,我需要先取消正在运行的任务,以防止数据被多次收到。任何想法如何解决它?
【问题讨论】:
-
您可能需要重新考虑您的策略。你到底在做什么?分块下载?
-
@Sufian 我调用了多个 API 并且服务器不是我的,所以我无法将 API 合并到一个响应中
标签: java android multithreading android-asynctask