14.5 AlarmManager

简介

闹钟服务,在特定的时刻为我们广播一个指定的Intent。

Timer类:不适合长期后台运行定时任务,CPU一旦休眠Timer中的定时任务就无法运行;

AlarmManager:具有唤醒CPU的功能;


常用方法

set(int type,long startTime,PendingIntent pi):一次性闹钟

setRepeating(int type,long startTime,long intervalTime,PendingIntent pi): 重复性闹钟

setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi): 重复性闹钟,时间不固定

cancel(PendingIntent pi):取消AlarmManager的定时服务

getNextAlarmClock():得到下一个闹钟,返回值AlarmManager.AlarmClockInfo

setAndAllowWhileIdle(int type, long triggerAtMillis, PendingIntent operation) :一次性闹钟,系统处于低电模式时有效

setExact(int type, long triggerAtMillis, PendingIntent operation): 在规定的时间精确的执行闹钟

setTime(long millis):设置系统墙上的时间

setTimeZone(String timeZone):设置系统持续的默认时区

setWindow(int type, long windowStartMillis, long windowLengthMillis, PendingIntent operation): 设置一个闹钟在给定的时间窗触发。类似于set,该方法允许应用程序精确地控制操作系统调 整闹钟触发时间的程度。


参数详解

Type(闹钟类型):

AlarmManager.ELAPSED_REALTIME:闹钟在手机睡眠状态下不可用,该状态下闹钟使用相对时间(相对于系统启动开始),状态值为3 

AlarmManager.ELAPSED_REALTIME_WAKEUP:闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟也使用相对时间,状态值为2

AlarmManager.RTC:闹钟在睡眠状态下不可用,该状态下闹钟使用绝对时间,即当前系统时间,状态值为1

AlarmManager.RTC_WAKEUP:表示闹钟在睡眠状态下会唤醒系统并执行提示功能,该状态下闹钟使用绝对时间,状态值为0

AlarmManager.POWER_OFF_WAKEUP:表示闹钟在手机关机状态下也能正常进行提示功能,所以是5个状态中用的最多的状态之一,该状态下闹钟也是用绝对时间,状态值为4;不过本状态好像受SDK版本影响,某些版本并不支持

startTime:

闹钟的第一次执行时间,以毫秒为单位,可以自定义时间,不过一般使用当前时间。 

type使用相对时间,startTime也使用相对时间,eg:当前时间SystemClock.elapsedRealtime()

type使用绝对时间,startTime也使用绝对时间,eg:当前时间System.currentTimeMillis()

intervalTime

表示两次闹钟执行的间隔时间,也是以毫秒为单位。

PendingIntent

PendingIntent是Intent的封装类,这里指闹钟响后的执行动作,比如发送一个广播、给出提示等等。

通过启动服务来实现闹钟提示,调用PendingIntent.getService 方法

通过广播来实现闹钟提示,调用PendingIntent.getBroadcast 方法

通过Activity来实现闹钟提示的话,调用PendingIntent.getActivity 方法


使用步骤

使用

你可能感兴趣的:(14.5 AlarmManager)