设置定时,任务:AlarmManager

本文详细介绍了在Android应用中使用AlarmManager设置单次闹钟、重复闹钟及非准确时间闹钟的方法,包括设置流程、标志类型及时间设置策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

http://www.360doc.com/content/13/0110/23/11991_259460170.shtml


使用闹钟首先是获取AlarmManager
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

然后是生成一个PendingIntent
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,req, intent, PendingIntent.FLAG_UPDATE_CURRENT);

其中req是这个PendingIntent的标志,Intent是将来要转发给BroadCastReceiver的Intent。

之后是通过AlarmManager设置闹钟,



其中

1.alarmManager.set(AlarmManager.RTC_WAKEUP, startTime, pendingIntent); //设置单次闹钟
2.alarmManager.setRepeating(AlarmManager.RTC, startTime, interval,pendingIntent); //设置重复发生的闹钟,比如每天一次的

3.设置非准确时间闹钟

alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent);

非准确闹钟只能保证大致的时间间隔,但是不一定准确,可能出现设置间隔为30分钟,但是实际上一次间隔20分钟,另一次间隔40分钟。它的最大的好处是可以合并闹钟事件,比如间隔设置每30分钟一次,不唤醒休眠,在休眠8小时后已经积累了16个闹钟事件,而在手机被唤醒的时候,非准时闹钟可以把16个事件合并为一个。 非准时闹钟一般来说比较节约能源。


闹钟的标志有四种:
AlarmManager.RTC,硬件闹钟,不唤醒休眠;
AlarmManager.RTC_WAKEUP,硬件闹钟,唤醒休眠;
AlarmManager.ELAPSED_REALTIME,真实时间流逝闹钟,不唤醒休眠;
AlarmManager.ELAPSED_REALTIME_WAKEUP,真实时间流逝闹钟,唤醒休眠;


RTC闹钟和ELAPSED_REALTIME最大的差别就是前者可以通过修改时间触发闹钟事件,后者要通过真实时间的流逝,即使在休眠状态,时间也会被计算。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值