█【安卓学习之常见问题】AlarmManager的setRepeating的用法-闹钟/定时器
█ 问题:
● 今天打开看了段代码没明白意思,因为没用过,就搜索了解下功能,代码如下:
AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent i = new Intent(NOTIFY_ACTION);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setRepeating(AlarmManager.RTC_WAKEUP , System.currentTimeMillis(), 3 * 60 * 1000, pi);
█ 功能:
● AlarmManager
是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。
● 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)
用于设置重复闹钟,间隔时间有偏差
● 参数int type: 闹钟的类型
AlarmManager.RTC,硬件闹钟,不唤醒手机(也可能是其它设备)休眠;当手机休眠时不发射闹钟。
AlarmManager.RTC_WAKEUP,硬件闹钟,当闹钟发躰时唤醒手机休眠;
AlarmManager.ELAPSED_REALTIME,真实时间流逝闹钟,不唤醒手机休眠;当手机休眠时不发射闹钟。
AlarmManager.ELAPSED_REALTIME_WAKEUP,真实时间流逝闹钟,当闹钟发躰时唤醒手机休眠;
● 参数long startTime: 闹钟的第一次执行时间,以毫秒为单位
● 参数long intervalTime:表示两次闹钟执行的间隔时间,以毫秒为单位。
● 参数PendingIntent pi: 绑定了闹钟的执行动作,比如发送一个广播、给出提示等等。
█ setRepeating和setInexactRepeating的区别:
● setRepeating:每间隔intervalTime毫秒发送一次 PendingIntent
● setInexactRepeating:每间隔大约intervalTime毫秒发送一次 PendingIntent 。在间隔时间上有点误差。
PS:两者的区别在于精确程度,使用setInexactRepeating可以减少电池的消耗,因此优先考虑此方法,对于时间要求比较精准的再考虑使用setRepeating。
█ 总结:
● 由于
█ 相关资料:
● 1.2012-10-11 Android中的AlarmManager的使用 - wangxingwu_314的专栏 - CSDN博客
● 2.Android AlarmManager – RTC_WAKEUP vs ELAPSED_REALTIME_WAKEUP Dovov编程网
● 3.2011-09-04 AlarmManager.RTC和ELAPSED_REALTIME的区别 - 程序人生 - ITeye博客
● 4.2017-02-15 AlarmManager.setRepeating的参数问题 - sunny_Harper的博客 - CSDN博客
● 5.2015-10-09 android - 安卓AlarmManager.setRepeating()真机运行的结果和设定的循环时间间隔不一致 - SegmentFault 思否
● 6.2018-05-08 AlarmManager的setRepeating和setInexactRepeating之间的区别? - 问答 - 云+社区 - 腾讯云
转载请注明出处:
https://blog.csdn.net/ljb568838953/article/details/90691552