AlarmManager延遲生效

2021-07-03 21:16:35 字數 1023 閱讀 9425

alarmmanager這個類提供對系統鬧鐘服務的訪問介面。

你可以為你的應用設定乙個在未來某個時間喚醒的功能。

當鬧鐘響起,實際上是系統發出了為這個鬧鐘註冊的廣播,會自動開啟目標應用。

註冊的鬧鐘在裝置睡眠的時候仍然會保留,可以選擇性地設定是否喚醒裝置,但是當裝置關機和重啟後,鬧鐘將會被清除

在alarm的receiver的onreceive()方法被執行的時候,alarm manager持有乙個cpu喚醒鎖,這樣就保證了裝置在處理完廣播之前不會sleep。

一旦onreceive()方法返回,alarm manager就會釋放這個鎖,表明一些情況下可能onreceive()方法一執行完裝置就會sleep。

如果你的alarm receiver中呼叫了context.startservice(),那麼很可能service還沒起來裝置就sleep了。

為了阻止這種情況,你的broadcastreceiver和service需要實現不同的喚醒鎖機制,來確保裝置持續執行到service可用為止。

注意:alarm manager主要是用來在特定時刻執行你的**,即便是你的應用在那個特定時刻沒有跑的情況。

對於常規的計時操作(ticks, timeouts, etc),使用handler處理更加方便和有效率。

另:從api 19開始,alarm的機制都是非準確傳遞,作業系統將會轉換鬧鐘,來最小化喚醒和電池使用。

有一些新的api會支援嚴格準確的傳遞,見 setwindow(int, long, long, pendingintent)和setexact(int, long, pendingintent)。

targetsdkversion在api 19之前應用仍將繼續使用以前的行為,所有的鬧鐘在要求準確傳遞的情況下都會準確傳遞。

AlarmManager使用總結

下面總結以下我在使用alarmmanager碰到的一些問題。由於心跳是週期性任務,所以我想使用setrepeating方法來執行 void setrepeating int type,long triggeratmillis,long intervalmillis,pendingintent ope...

AlarmManager 鬧鐘服務

alarmmanager簡介 在特定的時刻為我們廣播乙個指定的intent,簡單來說就是我們自己定乙個時間,然後到時間時,alarmmanager會為我們廣播乙個我們設定好的intent,比如指向某個activity或者service。獲得alarmmanager例項alarmmanager ala...

AlarmManager 鬧鐘簡述

alarmmanager是android中常用的一種系統級別的提示服務,在特定的時刻為我們廣播乙個指定的intent。簡單的說就是我們設定乙個時間,然後在該時間到來時,alarmmanager為我們廣播乙個我們設定的intent,通常我們使用 pendingintent,pendingintent可...