我想創建大量的asynctask,並依次運行。 這可能嗎?我無法找到任何解決方案。Android Asynctask按順序依次運行
onPostExecute然後再次調用一個新的AsnycTask對我來說不是一個好的解決方案。
所以我想:
async1.execute
async2.execute
async3.execute
async1.over->async2.start
async2.over->async3.start
我想創建大量的asynctask,並依次運行。 這可能嗎?我無法找到任何解決方案。Android Asynctask按順序依次運行
onPostExecute然後再次調用一個新的AsnycTask對我來說不是一個好的解決方案。
所以我想:
async1.execute
async2.execute
async3.execute
async1.over->async2.start
async2.over->async3.start
如果您使用串行執行程序(在API 11及以上版本中爲默認值),則會自動執行此操作。如果您需要在API 11之前工作,則需要執行經典的等待/通知技巧(https://www.science.uva.nl/ict/ossdocs/java/tutorial/java/threads/waitAndNotify.html)
不喜歡
async1.execute
then write async2.execute into onPostexecute of async1
and then write async3.execute into onPostexecute of async2
沒有任何其他有效的方式。您可以考慮實現線程(等待/通知),但這不適用於asyntask。
「onPostExecute然後再次調用新的AsnycTask對我來說不是一個好的解決方案。」 – user2717954 2014-10-29 09:05:17
@ user2717954爲什麼不呢? – nobalG 2014-10-29 09:05:57
地獄,如果我知道OP寫了什麼 – user2717954 2014-10-29 09:07:18
讓第一個AsyncTask爲MyAsyncTask1
,第二個爲MyAsyncTask2
。現在你想要的是。在活動從
執行MyAsyncTask1
採取的應對收到 現在就全成響應,執行MyAsyncTask2
有關調用它們的順序像什麼:
MyAsyncTask1.execute();
MyAsyncTask2.execute();
與上面的代碼問題就可以通過在AsyncTask
對象上執行調用將創建一個新的線程在不同的內存空間中運行,並立即在其自己的內存空間中啓動下一個AyncTask
這一事實可以理解。但這不是我們想要的。我們希望第一個線程必須完成其工作那麼只有第二個纔會開始工作。如何實現這個目標?
答案在於onPostExecute()
。這是這將幫助你擺脫這個situation.While調用執行上MyAsyncTask1
然後第一AsyncTask
其doInBackground()
後的方法,onPostExecute()
將被稱爲.Place在檢查即onPostExecute()
如果響應爲空,如果收到的響應不等於空,並且是有效的響應,則調用MyAsyncTask2
(如果指定了各自的參數)執行。
您可以在鏈做到這一點.....
// Async Task Class here async1
class YourAsynClass extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Shows Progress Bar Dialog and then call doInBackground method
showDialog(progress_bar_type);
}
@Override
protected String doInBackground(String... PassYourdata) {
// do your stuff here
}
@Override
protected void onPostExecute(String IFYouwantPassData) {
// Dismiss the dialog
dismissDialog(progress_bar_type);
// here async2
new SecondAsyncTask.execute(Passeddata);
}
}
,並在第三個做同樣的
我猜你應該使用執行人絲毫BlockQueue代替AsyncTask,並使用Handler發送處理結果。 BockQueue是一個FIFO數據結構,適合你的口味...
[**特別爲你**](http://nobalg.tumblr.com/post/98543748225/android-asynctasks-one-after-the -other) – nobalG 2014-10-29 09:05:31
'onPostExecute然後再次調用一個新的AsnycTask對我來說不是一個好的解決方案。「爲什麼? – 2014-10-29 09:06:46