我在测试AsyncTask的细节,并偶然发现当我启动多个任务时,任务6到15(总是10个任务)处于状态RUNNING,但不进入doInBackground(设置开始时间)。接下来的100个任务立即开始。AsyncTask:任务6到15没有启动(但正在运行)
Task Example http://beadsoft.de/android/tasknotrunning.png
的任务启动很简单:
int tasksToStart = TASKS_TO_ADD_ON_CLICK;
while (tasksToStart > 0) {
tasksToStart--;
mTask = new MyTask(TASK_RUNNING_TIME);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
mTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
else
mTask.execute();
tvTaskInfo.setText("Task " + mTask.id + " requested.");
}
这导致了后来所有启动的任务必须完成的情况任务前5名(意思是总运行的任务是小于5)实际上开始做某事。
a)是否有强制启动任务的方法?
b)为什么状态正在运行,如果它没有做任何事情。它不应该是PENDING吗?
我没有安卓4.x真实设备,无法在那里测试。在仿真器中也适用相同的限制。
有兴趣的人可以下载此示例项目here。
http://developer.android.com/reference/android/os/AsyncTask.html。根据执行顺序检查主题 – Raghunandan 2013-05-13 14:08:44
那有什么用?一般来说,这并不是我遇到问题或平行执行的顺序。我有任务5到16没有开始的问题。 – 2013-05-13 17:16:14
对于平行执行,使用执行器http://developer.android.com/reference/java/util/concurrent/Executor.html。不要使用asynctask并行执行 – Raghunandan 2013-05-13 17:30:45