有場景,我將不得不花費六個HTTP調用到我的服務器,以獲得六個不同的項目的數據。這些服務器調用不能合併,它們就是這樣的。例如:如果您需要GOOGLE的引用信息,則請求服務器請求Google的引用信息。接下來,如果你需要雅虎,那麼你發起另一個http調用,等等。我如何管理多個異步任務有效地在Android的
這裏的情況是:
- 現在我的最終用戶希望比較6級不同的公司。
- 正如我提到的其未避免的,我做我不使用6個異步任務對其中6 HTTP調用。
- 當我得到每一個Async任務響應時,我將用新數據刷新UI。
- 如果我在很短的時間內刷新用戶界面6次,這是一種糟糕的用戶界面體驗。
- 它給我的用戶界面,這是不希望的閃爍效果。
我的問題:
- 我怎麼能裝客從刷新UI,直到我得到的所有6層異步任務的反應?
- 我明白每個任務是相互獨立的。我應該運行一個while循環並等待,直到我得到所有的響應?
- 是否有更好的方法來做到這一點,而不是一個while循環,因爲如果呼叫中的任何一個沒有響應,那麼我將永遠堅持等待。
注:我猜的Android 1.6+做並行執行異步任務。
這更是一個設計問題,我將不勝感激任何幫助。
在此先感謝
我認爲這種方法不適合於一個活動,因爲CountDownLatch await方法會阻塞,直到所有任務完成並阻止UI線程不應該完成爲止。 – AndroidGuy 2013-03-12 20:57:43
countDownLatch位於主AsyncTask上,該AsyncTask產生子任務來完成實際的工作。完成所有子任務後,主任務會合並所有結果並返回到UI線程 – AKh 2013-03-13 19:00:17
這在Android上如何工作? – 2015-03-18 19:54:47