我有兩個asyc任務都執行單獨的網絡操作。我想要一個異步任務等待其他任務完成一個變量..我想這樣做就像執行其他任務第一個,但對於一個變量,我必須讓其他的任務要等待第一個完成... ASYC操作onPostexecute有沒有達到efficently Android異步任務等待其他任務完成
3
A
回答
3
參照this,您不能使用.execute()so;
首先,你必須要對你的任務是這樣的:
// Start first task
new Task1().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
// Start second task
new Task2().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, "");
,然後你可以做一個靜態變量,因此這兩個任務都可以訪問到它:
public static boolean task1Finished = false;
那麼簡單的例子任務:
首要任務
private class Task1 extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("myApp", "Task1 started");
for(int x = 0; x < 10; ++x)
{
try
{
Thread.sleep(1000);
//Log.d("myApp", "sleeped 1000 ms");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
return "";
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(String result) {
// Lets the second task to know that first has finished
task1Finished = true;
}
}
第二個任務
private class Task2 extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Log.d("myApp", "Task2 started");
while(task1Finished == false)
{
try
{
Log.d("myApp", "Waiting for Task1");
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
Log.d("myApp", "Task1 finished");
// Do what ever you like
// ...
return "";
}
@Override
protected void onPreExecute() {
}
@Override
protected void onPostExecute(String result) {
Log.d("myApp", "All done here (Task2)");
}
}
0
您需要創建第一個如果onpostExecute另一個異步你需要同步調用另一個。
4
可能的AsyncTask是不是最好的工具?還有一些有趣的課程在Android的API,可以幫助專門做同步作業:在Android developper
引用:「四個類可協助常見的專用同步成語
信號燈是一個經典的併發。工具。
CountDownLatch是用於阻擋直到信號,事件或條件成立的給定數目的非常簡單但很常見的實用程序。
- 甲的CyclicBarrier是resetta可用於某些並行編程風格的多路同步點。
- 的一交換機允許兩個線程在集合點交換對象,它在多流水線設計中是有用的「
所以我建議尋找到:
循環障礙 http://developer.android.com/reference/java/util/concurrent/CyclicBarrier.html
器 http://developer.android.com/reference/java/util/concurrent/Exchanger.html
相關問題
- 1. Android Expresso - 等待異步任務完成
- 2. 等待多個異步任務完成
- 3. 等待異步任務完成
- 4. 等待異步咕嚕任務完成
- 5. Phonegap等待異步任務完成
- 6. Angular-等待異步任務完成
- 7. Azure啓動任務,等待所有其他任務完成
- 8. 等待異步任務操作完成,並繼續當前的異步任務
- 9. 如何等待異步任務完成其工作?
- 10. 等待異步任務完成其工作
- 11. 異步/等待和任務
- 12. 異步任務等待
- 13. iOS5.1:同步任務(等待完成)
- 14. 如何等待在android中完成齊射異步任務?
- 15. 等待/異步任務不等待
- 16. C#異步任務等待VS等待
- 17. 等待異步Web服務調用完成內部任務
- 18. C#等待任務完成
- 19. 等待任務完成
- 20. ScheduledExecutorService等待任務完成
- 21. JavaFX - 等待任務完成
- 22. 在等待任務完成
- 23. 等待程序完成其任務
- 24. 等到課程完成異步任務
- 25. Android:等待多個任務完成
- 26. 等待其他處理器在MPI中完成其任務
- 27. 逐步創造異步任務,並等待他們全部完成
- 28. 等待異步任務完成在開始Angular JS之前
- 29. Espresso不應該等待異步任務完成。怎麼樣?
- 30. 的NodeJS:如何等待幾個異步任務完成
您的想法是正確的。請您嘗試過。? – Riser
現在我的執行是李克,但只有...我不得不推遲一個大的任務爲單變量 – paul
看看我的意思是這樣的圖片 – paul