2012-06-21 79 views
0

嗯,我有趣的問題。我有一個小工具,像提醒,它顯示了屏幕上最近的幾個項目。每個項目的時間,當它到來。我只需要顯示將來沒有通過的項目。由於定期更新至少可以每30分鐘完成一次,對我來說還不夠(我的項目有11.54,12.07等)。所以我只有1個選項=安排一項服務,它可以在任何我想要的時間間隔更新屏幕(例如每5分鐘)。智能小部件更新(不定期)

但是,這不是對我來說非常好,因爲我有2個要求,這是一點點一起戰鬥:

  • 運行非常頻繁(< 5分鐘)
  • 不要用太多的電池和其他資源

所以 - 有沒有可能像智能更新?我的意思是例如像這樣的算法:

a)當設備解鎖時,每隔1分鐘更新一次屏幕(=用戶正在用手機做某事) b)但設備在休眠時不更新(無用, t看到更新的結果)?

或者至少類似於「每5分鐘運行一次,但僅在上班時間的上午8:00至晚上8:00」?簡單的智能服務調度...

回答

0

所以我只有1選項=安排一項服務,它可以更新任何間隔我想要的屏幕(例如每5分鐘)。

還有其他的,更高效的選項,比如AlarmManager

有沒有可能像智能更新?我的意思是比如像算法

的智能算法將承認的事實,你只需要更新的應用程序窗口小部件時的名單變化,而不是每分鐘,秒,毫秒或。

使用AlarmManager可以在列表中的第一項之後的一分鐘內設置鬧鐘。當您從鬧鐘事件中獲得控制權時,請更新應用程序窗口小部件,然後使用AlarmManager在您的列表中的下一次設置鬧鐘一分鐘。當列表更改來自其他來源(例如,用戶界面,同步進程)時,還可以更新您的應用程序小部件,並且這可能會導致您需要提前發出警報,取消當前警報並使用AlarmManager安排新警報。

+0

是的,當然,我現在正在執行這個權利;)我只是想知道,如果有「更簡單」的選項,那麼我自己做。那麼,另一個看起來很有前途的選擇是收聽SCREEN_ON和SCREEN_OFF事件 - 它應該是電池的絕佳選擇。但是,由於一些奇怪的原因,我的廣播接收機不能監聽這兩種類型的意圖。然後,我發現你的回覆此線程http://stackoverflow.com/questions/2575242/android-intent-action-screen-on-doesnt-work-as-a-receiver-intent-filter,並意識到,並不總是一切都是100%的記錄;) – qkx

+0

@qkx:「那麼,另一個看起來很有前途的選擇是聽SCREEN_ON和SCREEN_OFF事件 - 它應該是絕對最佳的電池選擇。」 - 不是真的。畢竟,您不希望強制用戶關閉屏幕並更新列表,這意味着除了屏幕狀態更改之外,您還需要另一個觸發器*。使用具有非'_WAKEUP'警報的'AlarmManager'還可以避免在設備處於睡眠狀態時進行不必要的更新,同時儘可能以最有效的方式處理屏幕快照時的更新。 – CommonsWare

+0

我的意思是,然後我會有一個服務運行在普通itnerval(alarmmanager)例如5分鐘,當屏幕關閉時,我將取消該警報,因此即使屏幕關閉,服務也不會運行,甚至1次。屏幕開啓後,我將重新創建警報並安排服務以相同間隔運行,依此類推。但它沒關係,它不起作用,所以我會實現我自己的算法...問題關閉;) – qkx