2014-03-04 333 views
0

我正在開發一個應用程序,它可以從服務器下載JSON文件並以列表視圖顯示信息,沒有什麼特別的。但我想使它更有用一點。我想要做的是每10或x分鐘下載一次文件,並檢查是否有更改。如果有什麼改變,我想通知。所以它基本上就是郵件應用程序,如果新郵件到達,應用程序會在後臺每隔x分鐘檢查一次。但我真的不知道如何做一些類似於背景活動的東西,即使我的應用程序沒有處於活動狀態,它也會持續檢查文件。我已經閱讀了關於AlarmManager的消息,但它看起來不像我想要的那樣工作。那麼你有什麼技巧可以管理嗎?每10分鐘檢查一次更新並進行通知

+0

Alarm Manager有什麼問題? – Merlevede

+0

好吧,如果我沒有弄錯它總會啓動我的應用程序。但我不希望它被帶到前面。 – user3244092

回答

3

基本上你有兩種選擇:使用報警管理器或使用服務。

如果您不想爲您想要的操作提供用戶界面,那麼無論您使用哪種方法,最終都會使用服務。我將解釋:

如果您使用獨立服務,您需要負責實例化並終止它,您需要處理它的生命週期,並且每隔10分鐘啓動一次計時器以完成工作。此外,您需要考慮服務因內存原因而死亡的情況。

如果您使用報警管理器,您可以在意圖中傳遞服務。該服務不需要用戶界面,只需負責在啓動時完成這項工作,並在完成後自行結束。

我會使用報警管理器的服務,檢查here for an example

+0

謝謝,我已經這樣做了。但是現在我的問題是服務只能運行一次。我有一個帶有setRepeating的AlarmManager,它觸發一個BroadcastReceiver調用一個服務來完成這項工作。它工作一次,然後再也不會。 – user3244092

+0

配置警報的方式必須存在問題。我建議你用新問題發佈一個新問題。 – Merlevede

0

如果您控制服務器,請考慮使用Google Cloud Messaging,而不是讓所有客戶端一遍又一遍地輪詢服務器。這將節省電池電量和服務器負載。

如果它必須是純HTML服務器,請使用Alarm Manager作爲Merlevede的說明,並且還可以使用HTTP If-Modified-Since: dateHTTP Etag來檢查文件是否在下載之前進行了修改。