2011-11-29 122 views
0

我有一點建議,我想在我的應用程序中完成一件事。我希望我的應用程序每次啓動時通過互聯網同步一些數據,並且我的想法是我有一個自定義操作欄,其中包含一個圓形進度條,並且我希望在下載數據時運行進度欄,並在停止運行時停止運行下載結束。我想在我的tabhost的所有活動中執行此操作(我的應用程序中有2個,我想在主程序中執行此操作)。我已經嘗試過threadasync task,但是如果我更改活動並返回,則進度條不旋轉,與線程相同。我錯過了什麼,或者我應該嘗試使用服務。Android服務/異步任務/線程

或者哪個是完成此操作的最佳方法?

+0

您的代碼好嗎? – ingsaurabh

+0

這是很多代碼花花公子,我只是想知道哪個是最好的方式來完成這個和使用什麼。我使用的代碼工作正常,但問題是,據我所知,asynctask的生命週期取決於活動的生命週期,線程也有點類似。如果你能爲我提供一種方法來獲得,如果一個線程正在運行,然後獲得完成的時間,並完成一些事情,我會很高興,但這個問題的想法是獲得最好的建議這樣做的方法。 –

+1

你應該可以通過'AsyncTask'來做到這一點 – Caner

回答

1

你必須照顧活動的生命週期。假設你爲你所有的活動下載了相同的數據(就像我在我的遊戲中使用高分更新一樣),最好的方法(我能夠來)是產生單獨的線程,但只有一次(我使用單例對象來做這,所以我不會開始下載兩次)。當下載準備就緒時,它會觸發意圖,以便活動可以知道並正確更新用戶界面。

所以工作流程是這樣的:

  • 恢復活動
  • 獲得singletoin實例的情況下,
  • 開始下載未激活/必要顯示出下載
  • 更新界面過程 。 ..
  • 收到通知廣播和更新UI

我也可以重複使用此代碼廣播接收器,所以我可以安排高分的定期更新(即使遊戲目前不活躍)