我在測試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