alarmmanager是android中常用的一種系統級別的提示服務,在特定的時刻為我們廣播乙個指定的intent。簡單的說就是我們設定乙個時間,然後在該時間到來時,alarmmanager為我們廣播乙個我們設定的intent,通常我們使用 pendingintent,pendingintent可以理解為intent的封裝包,簡單的說就是在intent上在加個指定的動作。在使用intent的時候,我們還需要在執行startactivity、startservice或sendbroadcast才能使intent有用。而pendingintent的話就是將這個動作包含在內了。
定義乙個pendingintent物件 : pendingintent pi = pendingintent.getbroadcast(this,0,intent,0);
alarmmanager有如下三種方式提供提示服務:
方法1 : set(int type,long triggerattime,pendingintent operation)
該方法用於設定一次性鬧鐘,第乙個引數表示鬧鐘型別,第二個引數表示鬧鐘執行時間,第三個引數表示鬧鐘響應動作。
方法2 : setrepeating(int type,long triggerattime,long interval pendingintent operation)
該方法用於設定重複鬧鐘,第乙個引數表示鬧鐘型別,第二個引數表示鬧鐘首次執行時間,第三個引數表示鬧鐘兩次執行的間隔時間,第三個引數表示鬧鐘響應動作。
方法3 : setinexactrepeating(int type,long triggerattime,long interval pendingintent operation)
該方法也用於設定重複鬧鐘,與第二個方法相似,不過其兩個鬧鐘執行的間隔時間不是固定的而已
引數:
long intervaltime:對於後兩個方法來說,存在本屬性,表示兩次鬧鐘執行的間隔時間,也是以毫秒為單位。
pendingintent pi: 繫結了鬧鐘的執行動作,比如傳送乙個廣播、給出提示等等
alarmmanager manager = (alarmmanager) getsystemservice(alarm_service);//獲取alarmmanager例項
int anhour = 6 * 1000 ; // 6秒
long triggerattime = systemclock.elapsedrealtime() + anhour;
intent intent2 = new intent(this, alarmreceiver.class);
pendingintent pi = pendingintent.getbroadcast(this, 0, intent2, 0);
manager.set(alarmmanager.elapsed_realtime_wakeup, triggerattime, pi);//開啟提醒
用於取消:
amanager= (alarmmanager)getsystemservice(alarm_service);
intent intent = new intent(alarmtest.this, alarmactivity.class);
intent.setaction("111111");
pendingintent pendingintent = pendingintent.getactivity( alarmtest.this, 0, intent, 0); // 建立pendingintent物件
amanager.cancel(pendingintent);
android定時關機示例
public class ***x extends broadcastreceiver ; //關機時間資料
int myear = alarmoff[0];
int mmonth = alarmoff[1];
int mday = alarmoff[2];
int mhour = alarmoff[3];
int mminute = alarmoff[4];
//將關機時間轉換為字串
shutdown = date.tostring();
//格式化關機時間 將關機時間字串 轉換為 yyyy/mm/dd hh:mm 格式的 英文日期時間格式
date date = null;
******dateformat sdf = new ******dateformat("yyyy/mm/dd hh:mm");
try catch (parseexception e)
long timesetup = date.gettime();//獲取關機時間距離2023年1月1日(好像是這個時間)的毫秒數
intent intent = new intent(context,***x.class); 即定時時間到需要跳轉到的目標服務
intent.setaction(shutdown);//設定想要啟動能夠響應設定的這個 action(關機時間) 的活動 ,其實就是到時間後 和這個關機時間作比較
//將關機時間儲存到 alarmshutdown.xml檔案中
sharedpreferences pre = context.getsharedpreferences("alarmshutdown", context.mode_private);
sharedpreferences.editor preseditor = pre.edit();
preseditor.putstring(last_alarm_time,shutdown);
preseditor.commit();
//定義乙個pendingintent物件
pendingintent pi = pendingintent.getbroadcast(context, 0, intent, 0);
//設定鬧鐘 鬧鐘型別是rtc_wakeup,鬧鐘時間timedata ,鬧鐘響應動作是 pi
amanager.set(alarmmanager.rtc_wakeup, timesetup, pi);
//鬧鐘時間來臨,對比 鬧鐘時間的動作「關機time」 是否等於寫入xml檔案中的關機時間。比較的是字串
if(action.equals(getlastalarmtime(context)))
public static string getlastalarmtime(context context)else
}}
AlarmManager 鬧鐘服務
alarmmanager簡介 在特定的時刻為我們廣播乙個指定的intent,簡單來說就是我們自己定乙個時間,然後到時間時,alarmmanager會為我們廣播乙個我們設定好的intent,比如指向某個activity或者service。獲得alarmmanager例項alarmmanager ala...
手機鬧鐘服務 AlarmManager
alarmmanager通常用於開發手機鬧鐘,但實際上它的作用不止於此。他本質是乙個全域性定時器,alarmmanager可以在指定時間或指定週期內啟動其他元件 包含activity,broadcastreceviecer,service 通過context的getsystemservice 方法來...
AlarmManager鬧鐘定時操作
alarmmanager的常用方法有三個 1 set int type,long starttime,pendingintent pi 該方法用於設定一次性鬧鐘,第乙個引數表示鬧鐘型別,第二個引數表示鬧鐘執行時間,第三個引數表示鬧鐘響應動作。2 setrepeating int type,long ...