1. 程式人生 > >Android AlarmManager 定時鬧鐘實現在CPU休眠狀態下進行業務操作

Android AlarmManager 定時鬧鐘實現在CPU休眠狀態下進行業務操作

首先,完全沒必要擔心AP休眠會導致收不到訊息推送。通訊協議棧運行於BP,一旦收到資料包,BP會將AP喚醒,喚醒的時間足夠AP執行程式碼完成對收到的資料包的處理過程。其它的如Connectivity事件觸發時AP同樣會被喚醒。那麼唯一的問題就是程式如何執行向伺服器傳送心跳包的邏輯。你顯然不能靠AP來做心跳計時。Android提供的Alarm Manager就是來解決這個問題的。Alarm應該是BP計時(或其它某個帶石英鐘的晶片,不太確定,但絕對不是AP),觸發時喚醒AP執行程式程式碼。那麼Wake Lock API有啥用呢?比如心跳包從請求到應答,比如斷線重連重新登陸這些關鍵邏輯的執行過程,就需要
Wake Lock來保護。而一旦一個關鍵邏輯執行成功,就應該立即釋放掉Wake Lock了。兩次心跳請求間隔510分鐘,基本不會怎麼耗電。除非網路不穩定,頻繁斷線重連,那種情況辦法不多。