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可...