0

我有一個非常普遍的問題,但無法找到合適的解決方案/模式來解決它。我的應用程序有兩種類型的數據需要被自動更新:帶SyncAdapter和不帶SyncAdapter的應用程序自動更新

  • 通用數據
  • 用戶相關的數據

如果用戶沒有登錄,只是一般的數據下載和顯示,如果用戶登錄,他/她的數據也被處理。

我需要定期從Web服務中下載這些數據,從設備的啓動開始(在觸發操作android.intent.action.BOOT_COMPLETED之後)。 由於我的應用程序可以移動到SD,我還需要註冊android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE操作。

第1期:從API級別11(蜂巢)all actions aren't sent to applications in a stopped state開始。我還沒有完全理解這一點,這是否意味着我的應用程序不能監聽剛剛安裝並且從未打開過的操作(因此只有一次,如果我們計算更新)?或者這是否意味着,在每次系統重啓後,,只有在應用程序啓動時纔會觸發該操作?

問題2:如果應用程序已被移動到SD,SyncAdapter旨意無法運行,所以我必須要依靠廣大BroadcastReceiver - Service - Alarm - PendingIntent策略。但是我怎麼理解SyncAdapter不會被系統啓動? (我已經通過AccountManager處理Account

你知道任何照顧這一切的圖書館嗎?這似乎很奇怪,這不是一個常見問題嗎?

回答

1

回覆:問題1,據我所知,應用程序不是「活着」,直到用戶第一次明確運行它。除非用戶在Android的應用程序管理設置中使用按鈕明確地停止它,否則它將仍然「活着」直到日子結束。然後,他將不得不手動重新運行應用程序,以便能夠接收廣播和內容。

+0

此行爲已得到證實:應用程序第一次安裝並打開後,您可以重新啓動,並且仍然會收到'android.intent.action.BOOT_COMPLETED'。 我還沒有想出如何解決問題2。 – frapontillo 2013-03-26 15:16:53