简介
闹钟服务,在特定的时刻为我们广播一个指定的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 方法
使用步骤
![](https://img.haomeiwen.com/i2354038/4aff21e7371e8af8.png)
网友评论