AlarmManager實現定時器 鬧鐘

2021-07-25 02:55:19 字數 1756 閱讀 5703

alarmmanager的使用機制有的稱呼為全域性定時器,有的稱呼為鬧鐘。通過對它的使用,個人覺得叫全域性定時器比較合適,其實它的作用和timer有點相似。都有兩種相似的用法:(1)在指定時長後執行某項操作(2)週期性的執行某項操作

alarmmanager物件配合intent使用,可以定時的開啟乙個activity,傳送乙個broadcast,或者開啟乙個service.

//操作:傳送乙個廣播,廣播接收後toast提示定時操作完成

intent intent =new intent(main.this, alarmreceiver.class);

intent.setaction("short");

pendingintent sender=

pendingintent.getbroadcast(main.this, 0, intent, 0);

//設定乙個五秒後的時間

calendar calendar=calendar.getinstance();

calendar.settimeinmillis(system.currenttimemillis());

calendar.add(calendar.second, 5);

alarmmanager alarm=(alarmmanager)getsystemservice(alarm_service);

alarm.set(alarmmanager.rtc_wakeup, calendar.gettimeinmillis(), sender);

//或者以下面方式簡化

system.currenttimemillis()+5*1000, sender);

(2)週期性的執行某項操作

intent intent =new intent(main.this, alarmreceiver.class);

intent.setaction("repeating");

pendingintent sender=pendingintent

.getbroadcast(main.this, 0, intent, 0);

//開始時間

long firstime=systemclock.elapsedrealtime();

alarmmanager am=(alarmmanager)getsystemservice(alarm_service);

//5秒乙個週期,不停的傳送廣播

am.setrepeating(alarmmanager.elapsed_realtime_wakeup

, firstime, 5*1000, sender);

alarmmanager的setrepeating()相當於timer的schedule(task,delay,peroid);
(3)取消週期性任務

intent i = new intent();

i.setclass(this, pushservice.class);

i.setaction(action_keepalive);

pendingintent pi = pendingintent.getservice(this, 0, i, 0);

alarmmanager alarmmgr = (alarmmanager) getsystemservice(alarm_service);

alarmmgr.cancel(pi);

AlarmManager類的應用(實現鬧鐘功能)

1 alarmmanager,顧名思義,就是 提醒 是android中常用的一種系統級別的提示服務,可以實現從指定時間開始,以乙個固定的間隔時間執行某項操作,所以常常與廣播 broadcast 連用,實現鬧鐘等提示功能 2 alarmmanager的常用方法有三個 1 set int type,lo...

使用AlarmManager實現精確定時任務

最近實現了乙個小專案 定時執行任務。專案位址 坑 執行時間不准甚至不執行。各種查資料,無果 可能是搜商不夠 最終實現 將寫的應用加入手機的白名單或新增為保護程式 不同的手機有不同的叫法 允許程式鎖屏後能執行。實現思路 使用pendingintent.getbroadcast 實現到指定時間傳送廣播,...

AlarmManager延遲生效

alarmmanager這個類提供對系統鬧鐘服務的訪問介面。你可以為你的應用設定乙個在未來某個時間喚醒的功能。當鬧鐘響起,實際上是系統發出了為這個鬧鐘註冊的廣播,會自動開啟目標應用。註冊的鬧鐘在裝置睡眠的時候仍然會保留,可以選擇性地設定是否喚醒裝置,但是當裝置關機和重啟後,鬧鐘將會被清除。在alar...