我希望我的應用程序每小時訪問一次數據庫並從表中讀取下一條記錄,然後更新桌面小部件併發送通知。我知道有AlarmManager可以用來註冊我的意圖,但是當手機關機或重新啓動時它們會被刪除。如何安排我的Android應用程序每小時執行一些操作
是否有任何其他的Android類/服務,我會不斷更新我的應用程序,即使當我重新啓動我的手機?
感謝,
我希望我的應用程序每小時訪問一次數據庫並從表中讀取下一條記錄,然後更新桌面小部件併發送通知。我知道有AlarmManager可以用來註冊我的意圖,但是當手機關機或重新啓動時它們會被刪除。如何安排我的Android應用程序每小時執行一些操作
是否有任何其他的Android類/服務,我會不斷更新我的應用程序,即使當我重新啓動我的手機?
感謝,
看看演示應用提供了Android SDK中
http://developer.android.com/samples/RepeatingAlarm/index.html
的模樣AlarmService_Service對於服務的實現,一旦警報被觸發
將您想要在您的應用中執行的所有後臺任務放在Services
後臺執行任務。在服務中,您應該能夠定義一個計時器,它會導致每x小時發生一次更新。
在小部件的onCreate()
中,啓動該服務。每當widget開始生效時(例如手機在主屏幕上啓動時),都會調用onCreate()
,並因此保證Service
始終處於運行狀態。
希望這有幫助。
持久的服務是在市場上獲得一星評價的單程票。 – CommonsWare 2010-09-12 19:44:12
不,我從來沒有說過「永久服務」是一個好主意,但@marqss說他想要一個始終運行的服務......即使在電話重置之後。 – mtmurdock 2010-09-12 19:59:05
爲了完整性,我在這裏鏈接官方文檔,重新引導的問題得到了解決。
http://developer.android.com/training/scheduling/alarms.html#boot
對於「但是他們當手機關機或重啓刪除」,你需要實現一個'BOOT_COMPLETED'接收器在重新啓動後重新建立報警。如果你正在實現一個應用部件,你也可以選擇在你的應用部件元數據中使用'android:updatePeriodMillis' - 這個報警會自動爲你管理,但它不那麼靈活。 – CommonsWare 2010-09-12 19:47:32
該示例似乎不再可以在線獲得,而且顯然也不適用於較新的SDK版本。但是,可以在這裏找到類似的(也許甚至是相同的?)示例:https://code.google.com/p/android-lab/source/browse/trunk/android-lab/src/com/example/android /apis/app/AlarmService.java – peterp 2013-01-30 22:16:53