AlarmManager 鬧鐘簡述

2021-09-05 10:48:34 字數 3323 閱讀 2531

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