我正在测试 AsyncTask 详细信息并偶然发现当我启动多个任务时,任务 6 到 15(总是 10 个任务)处于 RUNNING 状态,但没有进入 doInBackground(设置开始时间的位置)。接下来的 100 个任务将立即启动。
(来源:beadsoft.de)
任务开始非常简单:
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) 如果什么都不做,为什么状态是 RUNNING。它不应该是 PENDING 吗?
我没有 android 4.x 真实设备,无法在那里进行测试。在模拟器中同样的限制适用。
任何有兴趣的人都可以在这里下载这个示例项目。