2013-07-26 38 views
6

您能否告訴我在Android中執行同步作業的正確方法是什麼(例如,如果我有大約5個作業)?
注意!通過同步作業我的意思是它在後臺運行,並通過Web服務發送一些數據(例如分析)線程...用於與Web服務同步的Android後臺作業

欲瞭解更多詳細信息,請閱讀更詳細的說明:

我有一個任務來實現一些後臺作業,這些後臺作業將使一些數據與平靜的Web服務同步。應該定期安排一些工作,並延遲一段時間。如果沒有互聯網連接,那麼我只需緩存數據,稍後連接重新出現時,我會嘗試運行這些作業。 考慮到創建新線程非常昂貴,尤其是在移動開發上,我使用了緩存線程池(ExecutorService),每次有一些操作請求處理時,我試圖重新使用這些線程。我不使用AsyncTask,因爲我已經用這個Executor Service(Executors.newCachedTreadPool)取代了它,它對我來說很方便,因爲我不需要在重新使用ES中的線程時創建許多AsyncTasks ...爲了支持計劃的作業,我使用另一個線程池(ScheduledExecutorService)並使用Callable,因爲我需要查看執行結果。我在這裏有一個複雜的邏輯...所以,當一個特定的動作在應用程序中完成時,第一個線程池(就像AsyncTask)將像AsyncTask一樣工作,優點是我不創建新線程但我reus他們。這不會阻止用戶界面的主線程。它將委託給將執行其工作的預定執行者。 該解決方案有效。這對我來說聽起來很不錯,因爲我是從服務器端來的,但我很想知道如何在Android上正確執行這個操作?這對於移動應用程序來說太複雜了嗎? Merci, Serge

回答

10

使用同步適配器。見http://developer.android.com/training/sync-adapters/index.html。同步適配器在後臺運行,由系統管理,並且高效安排,以便您的同步不會浪費電池電量。最重要的是,系統會自動檢測網絡連接,並在必要時排隊您的同步適配器。如果你願意,你可以使用多個同步適配器。

請注意,雖然它似乎似乎同步適配器需要一個內容提供商和身份驗證,他們真的不需要。

+0

謝謝喬,你的回答真的很有幫助。我已閱讀文章,並將使用同步適配器。這似乎是我正在尋找...非常感謝。 – Serge