1
我想啓動兩個異步任務,但第二個將不會啓動,直到第一個完成。嘗試啓動兩個異步任務的問題。
從我GOOGLE了,人們通常認爲這種方法:
new MyAsyncTask().execute(params);
new MyAsyncTask().execute(params);
不過,我需要單獨實例化他們,同時也保持了任務的的句柄(通過例如消息)。因此,我有點做到這一點:
onStart()
{
taskA = new MyAsyncTask(paramsA);
taskB = new MyAsyncTask(paramsB);
}
onButtonPress()
{
taskA.execute();
taskB.execute();
}
編輯: 我注意到,taskB實際上並沒有開始執行任務A完成,直到(這所以它需要較長的時間運行的TCP/IP服務器)。我無法弄清楚爲什麼。任何想法或意見?
感謝您的回答。我嘗試了#2,但'Executor.THREAD_POOL_EXECUTOR'由於某種原因不會通過編譯。明天左右我會看看#1。任何人都有一個關於良好Runnable示例的建議? – barnie82
是的,問題是'executeOnExecutor'是3.0+,所以我不認爲有一種方法來使用'AsyncTask'並且它是版本獨立的。我最終爲我的代碼使用了'Runnable'。唯一真正的技巧就是將結果返回到UI線程。在我的情況下,我將工作線程的對象傳遞給一個'Handler'。然後當工作線程完成時(或者想要更新進度),它可以調用'Handler.post()'。我不確定是否有更好的方法來解決這個問題,但至少它是有效的。 –
#1就像一個魅力:)感謝噸託德! – barnie82