2012-06-23 39 views
0

我在這裏有一個問題,如果我調用兩個AsyncTasks,最後一個的doinbackground永遠不會被調用。我真的需要從我的主要活動線程中調用這兩個操作。多個AsyncTask不一起執行

請一些線索的問題..

感謝

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    . 
    . 
    . 
    . 
    . 
    . 
    new ClientListener(this).execute(); 
    new DatabaseReader(this).execute(); 
} 

回答

2

的AsyncTask使用從doInBackground運行的東西一個線程池()。這個問題最初(在早期的Android操作系統版本中)池大小僅爲1,這意味着一堆AsyncTasks沒有並行計算。但是後來他們修復了這個問題,現在的大小是5,所以至多5個AsyncTasks可以同時運行。不幸的是,我不記得他們改變了那個版本的版本。

按照谷歌文檔

當第一次推出,AsyncTasks進行系列在單個 後臺線程執行。從DONUT開始,將其更改爲允許多個任務並行操作的 線程池。在 HONEYCOMB之後,計劃將其重新更改爲單個線程,以便 避免由並行執行導致的常見應用程序錯誤。如果您真的想要並行執行 ,可以使用 executeOnExecutor(Executor,Params ...)版本的此方法與 THREAD_POOL_EXECUTOR;不過,請參閱其中的註釋,其中使用 的警告。