Android中多种不同的类型闹钟

Android中支持多种不同类型的闹钟,包括RTC硬件闹钟,根据真实时间流逝的ELAPSED_REALTIME闹钟,唤醒休眠和不唤醒休眠的闹钟,以及很有意思的非准时闹钟。不过至今为止,Android还不支持关机闹钟。
使用闹钟首先是获取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设置闹钟,其中
alarmManager.set(AlarmManager.RTC_WAKEUP, startTime, pendingIntent); //设置单次闹钟//设置重复发生的闹钟,比如每天一次的

long startTime = System.currentTimeMillis();
alarmManager.setRepeating(AlarmManager.RTC, startTime, interval,pendingIntent);

long elapsedTime = SystemClock.elapsedRealtime();

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

RTC闹钟和ELAPSED_REALTIME最大的差别就是前者可以通过修改时间触发闹钟事件,后者要通过真实时间的流逝,即使在休眠状态,时间也会被计算。
最后说一下设置非准确时间闹钟
alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent);
非准确闹钟只能保证大致的时间间隔,但是不一定准确,可能出现设置间隔为30分钟,但是实际上一次间隔20分钟,另一次间隔40分钟。它的最大的好处是可以合并闹钟事件,比如间隔设置每30分钟一次,不唤醒休眠,在休眠8小时后已经积累了16个闹钟事件,而在手机被唤醒的时候,非准时闹钟可以把16个事件合并为一个。非准时闹钟一般来说比较节约能源。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值