1. 程式人生 > >關於AlarmManager設定重複鬧鐘延遲的問題

關於AlarmManager設定重複鬧鐘延遲的問題

一原因、

自己正式上線的第一個專案我的職責就是負責鬧鐘和倒計時模組的編寫,在編寫鬧鐘模組的時候,單個鬧鐘響鈴沒有問題,但是在重複鬧鐘這塊發生延遲響鈴的問題,延遲時間從一兩分鐘到幾分鐘不等,但不會超過十分鐘(其它手機可能有超過十分鐘的情況,但手裡的測試機沒有遇到過)。後來查閱文件才知道,4.4以上為了省電和電池效能優化,系統設定了“對齊喚醒”機制,就是對AlarmManager重複鬧鐘(各個廠商的手機對系統進行了定製,設定的時間不一樣,所以導致了延遲最大時間也不一樣)每過幾分鐘檢查一次,而不再是實時監聽。

二解決、

對重複鬧鐘設定需要第一次響鈴的單個鬧鐘,然後響鈴的同時計算到下一個鬧鐘響鈴的間隔,再次設定。一般重複鬧鐘間隔都是固定的,所以計算一次即可,對於不固定的鬧鐘需要多次計算。鬧鐘程式碼很多,此處就不貼程式碼了。