2012-03-15 75 views
2

我在我的小部件中有一個時鐘,我想讓它每分鐘更新一次與系統時鐘同步。 ACTION_TIME_TICK看起來像是一個完美的解決方案,但是我的很多研究表明,在AppWidget中這是不可能的,而另一些人則說有解決方法,但它們非常模糊。Android:ACTION_TIME_TICK在AppWidget中

我不想做AlarmManager,因爲我必須非常頻繁地更新以確保當系統時鐘更改分鐘數時會更改分鐘數並且會耗盡電池電量。

ACTION_TIME_TICK是否有解決方法或什麼是以最少的電池消耗更新每分鐘與系統時鐘同步的最佳方法?

回答

4

的價值,甚至在背景中有一種解決方法ACTION_TIME_TICK

ACTION_TIME_TICK只能通過registerReceiver()從已經運行的東西註冊。在你的情況下,這個「東西」需要是一個不斷運行的Service,這通常是一種反模式。用戶和操作系統可以在需要時擺脫該服務。

我會找到一種輕鬆放鬆「與系統時鐘同步」要求的方法,然後使用AlarmManager。畢竟,Android不是一個RTOS,所以沒有任何將在任何保證意義上「與系統時鐘同步」。

使用AlarmManager,您可以指定第一個鬧鐘爲下一分鐘的「首位」,週期爲60秒,setRepeating()。或者,如果您認爲可以通過這種方式手動更正漂移,那麼計劃在下一分鐘的「頂部」排定set(),然後通過set()安排下一個作爲您自己處理的一部分。

+0

Gotcha。至少我對情況有了更好的解釋。我會更仔細地看看AlarmManager和其他一些例子,並從那裏開始。謝謝。 – user1269977 2012-03-15 21:41:39

0

如果你只需要顯示它時,你的應用程序運行,然後使用的AsyncTask 剛剛更新,但如果你需要它,然後用服務將是最好的主意