【问题标题】:Android AlarmManager setReating and setInexactRepeatingAndroid AlarmManager setReating 和 setInexactRepeating
【发布时间】:2014-03-21 15:24:05
【问题描述】:
我已准备好阅读文档,但我对 setReating 和 setInexactRepeating 有一些疑问。我正在阅读其他一些帖子,但我找不到答案。
文档对两者都有说明:
注意:从 API 19 开始,所有重复警报都是不准确的。
是否意味着这两种方法在 api 19 及更高版本中完全相同?还有不精确有多不精确?如果有延迟,后续报警会有什么影响?
提前致谢。
【问题讨论】:
标签:
android
alarmmanager
repeatingalarm
【解决方案1】:
正如人们可以在official documentation 末尾看到的那样,从 API 19 [和未来版本] 开始,所有对 setRepeating() 的调用都将委托给 setInexactRepeating()。因此,从 KitKat 和即将推出的版本开始,这两种方法的作用完全相同。
延迟不会影响以下与official documentation相关的警报。
安排一个具有不精确触发时间要求的重复警报;
例如,每小时重复一次的警报,但不一定在
每个小时的顶部。这些警报比
传统上由 setRepeating(int, long,
long, PendingIntent),因为系统可以调整警报的传递
时间使它们同时触发,避免唤醒设备
过度睡眠。
您的闹钟的第一次触发不会在请求的时间之前,但
在那之后的几乎一个完整的时间间隔内,它可能不会发生。在
此外,而重复警报的总周期将是
请求,任何两次连续触发警报之间的时间
可能会有所不同。如果您的应用需要非常低的抖动,请使用 one-shot
用适当的窗口代替警报;见 setWindow(int, long,
long, PendingIntent) 和 setExact(int, long, PendingIntent)。
从 API 19 开始,所有重复警报都是不准确的。因为这种方法
从 API 3 开始可用,您的应用程序可以安全地调用它
并确保它会在当前和
旧版本的 Android。