AlarmManager使用

本文介绍了Android的AlarmManager服务,用于在指定时间唤醒设备执行任务。详细解析了AlarmManager的接口,包括set、setRepeating和setInexactRepeating等方法,并提醒开发者在BroadcastReceiver和Service中正确处理唤醒锁。还探讨了Alarm的问题,如批处理队列、非唤醒alarm的延时统计等。
摘要由CSDN通过智能技术生成

AlarmManager使用

AlarmManager简介

AlarmManager简介

AlarmManager这个类提供对系统闹钟服务的访问接口。你可以为你的应用设定一个在未来某个时间唤醒的功能。当闹钟响起,实际上是系统发出了为这个闹钟注册的广播,会自动开启目标应用。注册的闹钟在设备睡眠的时候仍然会保留,可以选择性地设置是否唤醒设备,但是当设备关机和重启后,闹钟将会被清除。

在alarm的receiver的onReceive()方法被执行的时候,AlarmManager持有一个CPU唤醒锁,这样就保证了设备在处理完广播之前不会sleep。一旦onReceive()方法返回,AlarmManager就会释放这个锁,表明一些情况下可能onReceive()方法一执行完设备就会sleep。如果你的alarmreceiver中调用了Context.startService(),那么很可能service还没起来设备就sleep了。为了阻止这种情况,你的BroadcastReceiver和Service需要实现不同的唤醒锁机制,来确保设备持续运行到service可用为止。

注意:Alarm Manager主要是用来在特定时刻运行你的代码,即便是你的应用在那个特定时刻没有跑的情况。对于常规的计时操作(ticks, timeouts, etc),使用Handler处理更加方便和有效率。另:从API 19开始,alarm的机制都是非准确传递,操作系统将会转换闹钟,来最小化唤醒和电池使用。有一些新的API会支持严格准确的传递,见 setWindow(int, long, long, PendingIntent)和setExact(int, long, PendingIntent)。targetSdkVersion在API19之前应用仍将继续使用以前的行为,所有的闹钟在要求准确传递的情况下都会准确传递。

AlarmManager接口


1、 cancel(PendingIntent operation) Remove any alarms with a matching Intent.
2、 changeAlarmType(String pkgName, boolean wakeup)
3、 getNextAlarmClock()

Gets information about the next alarm clock currently scheduled.

4、 set(int type, long triggerAtMillis, PendingIntent operation)

Schedule an alarm.

5、 setAlarmClock(AlarmManager.AlarmClockInfo info, PendingIntent operation)

Schedule an alarm that represents an alarm clock.

6、 setExact(int type, long triggerAtMillis, PendingIntent operation)

Schedule an alarm to be delivered precisely at the stated time.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值