Android 中AlarmManager学习笔记(2)

时间:2022-12-26 10:46:59

AlarmManager:android.app包中的类,继承自根基类Object.管理应用在未来某个时间启动。在时间点到达时,会通过注册在广播接收者中的intent启动这个Alarm.如果手机是睡眠状态,则会唤醒手机,继续启动应用。如果手机关机或重启了,该alarm计划就会失效。


public void cancel(PendingIntent operation)


匹配传入参数的Intent的Intent都被移除,该计划取消。Intent.filterEquals(Intent)可以判断是否符合

public void set(int type, long triggerAtMillis, PendingIntent operation)


设置一个alarm计划,如果之前有相同的intent,则覆盖掉。API19开始,该方法变的可能不准时,因为API19后运用了优化处理,系统可以调整该alarm计划的时间以求节约用电。


public void setExact(int type, long triggerAtMillis, PendingIntent operation)


api19新增方法。该方法类似上面的set方法,区别在于不允许OS去调整执行时间,该计划必须在规定时间内执行。


public void setInexactRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)


从规定时间开始,每隔一段时间开始重复该alarm计划。api19开始不准确。


public void setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)


从规定时间开始,每隔一段时间开始重复该alarm计划。OS不可以调整


public void setTime(long millis)


设置时间


public void setTimeZone(String timeZone)


设置时区


public void setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation)


api19新增该方法。让某一个窗口在某个时间出现,并停留一段时间。


Type


再说type的值代表的意义,type的值有4中选择:


ELAPSED_REALTIME:值为3 、从设备启动开始计时,包括睡眠时间。当alarm到来时,机器处于睡眠时间,该alarm不会唤醒设备,而是等待下一次设备处在活动状态才执行

ELAPSED_REALTIME_WAKEUP:值为2 、从启动开始计时,包括睡眠时间。当该计划到来时,唤醒设备并执行。

RTC:值为1 、以时钟的时间为准。不唤醒

RTC_WAKEUP:值为0 、以时钟的时间为准。不唤醒。