0

當我在我的視圖中使用AsyncTask.THREAD_POOL_EXECUTOR標誌運行多個AsyncTasks標誌時,我發現不超過兩個AsyncTasks併發運行。其實當兩個AsyncTasks完成他們的工作接下來兩個開始。我也在github上試過這個AsyncTask測試項目。我得到了同樣的結果,看logcat那裏沒有更多的兩個AsyncTasks同時運行。不能同時運行兩個以上的asynctask

我怎樣才能同時運行兩個以上的asynctasks?

+2

使用執行程序 – Blackbelt 2014-09-26 19:05:36

+0

@blackbelt您是否有示例代碼或有用的鏈接? – 2014-09-26 19:06:55

+2

爲Executor?看看文檔:) – Blackbelt 2014-09-26 19:07:42

回答

2

documentation說:

當第一次推出,AsyncTasks進行系列在單個 後臺線程執行。從DONUT開始,將其更改爲允許多個任務並行操作的 線程池。從 HONEYCOMB開始,任務在單個線程上執行,以避免並行執行導致的常見應用程序錯誤 。

因此,這意味着,他們是在一個單獨的線程中執行,這意味着,在默認情況下,你只能有一個AsyncTask活躍在同一時間。

但是,不要害怕,文件進一步指出:

如果你真的想並行執行,你可以調用 executeOnExecutor(java.util.concurrent.Executor,對象[])與 THREAD_POOL_EXECUTOR。

所以... new MyTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);

會做的伎倆爲您服務。

+1

但我已經說過我正在使用這個標誌。 – 2014-09-26 19:31:12

相關問題