2014-03-13 66 views
0

在我的應用程序中,我需要定期從互聯網獲取一些json數據,然後我想根據這些數據更新我的應用程序的用戶界面。我如何執行後臺任務,然後在完成時更新UI?這裏有一些問題,我跑進:在後臺運行代碼,然後更新UI完成

  • 使用服務/鬧鐘,我不能把我的JSON回活動
  • 使用的定時器/ TimerTask的,我不能更新UI,因爲只有線程創建的視圖可能會改變他們
  • 使用的AsyncTask是工作的罰款,但我不能運行它定期

我一直在執行我的活動監聽器當JSON被取出時被觸發。這看起來像是一個直截了當的事情,我確信必須有一個解決方案!

+0

爲什麼您的服務/警報不能將JSON發回活動?看一看[ResultReceivers]()。 – panini

+0

幾乎所有的子彈都是錯的 - 你可以從服務/報警中返回數據。您可以隨時通過發佈到執行實際UI更改的處理程序來從其他線程更新UI。您可以定期運行AsyncTask。而且你總是可以製作一個線程。最好的辦法取決於更新的頻率,無論你想在應用程序不在前臺時執行此操作,等等。 –

+0

我的錯誤是,我想更新得相當頻繁,但只在我的應用程序處於前臺;你知道哪種方法最適合這個嗎? – beenjaminnn

回答

0

雖然加入粘合劑之間活動和服務將有工作,我結束了以下resus的答案提供here。它使用Handler在未來發布由AsyncTask完成觸發的方法中的新任務。

這對我來說很好,因爲我已經設置了一個監聽器。

0

使用服務/鬧鐘,我不能把我的JSON回活動,使用的粘合劑來創建服務和活動之間的連接,或廣播傳輸數據來觸發UI更新