我已准备好阅读文档,但我对 setReating 和 setInexactRepeating 有一些疑问。我正在阅读其他一些帖子,但我找不到答案。
文档对两者都说:
注意:从 API 19 开始,所有重复警报都是不准确的。
是否意味着这两种方法在 api 19 及更高版本中完全相同?还有不精确有多不精确?如果有任何延迟,接下来的警报会有什么影响?
提前致谢。
我已准备好阅读文档,但我对 setReating 和 setInexactRepeating 有一些疑问。我正在阅读其他一些帖子,但我找不到答案。
文档对两者都说:
注意:从 API 19 开始,所有重复警报都是不准确的。
是否意味着这两种方法在 api 19 及更高版本中完全相同?还有不精确有多不精确?如果有任何延迟,接下来的警报会有什么影响?
提前致谢。
正如人们可以在 API 19 [和未来版本] 的官方文档末尾阅读的那样,所有调用都setRepeating()
将委托给setInexactRepeating()
。因此,从 KitKat 和即将推出的版本开始,这两种方法都做同样的事情。
延迟不会影响以下参考官方文档的警报。
安排触发时间要求不准确的重复警报;例如,每小时重复一次的警报,但不一定在每小时的开头。这些警报比传统上由 setRepeating(int, long, long, PendingIntent) 提供的严格重复更节能,因为系统可以调整警报的传递时间以使它们同时触发,避免不必要地从睡眠中唤醒设备.
您的警报的第一次触发不会在请求的时间之前,但它可能不会在该时间之后的几乎整个间隔内发生。此外,虽然重复警报的整个周期将按要求进行,但警报的任意两次连续触发之间的时间可能会有所不同。如果您的应用程序需要非常低的抖动,请改用带有适当窗口的一次性警报;参见 setWindow(int, long, long, PendingIntent) 和 setExact(int, long, PendingIntent)。
从 API 19 开始,所有重复警报都是不准确的。由于此方法从 API 3 开始可用,因此您的应用程序可以安全地调用它,并确保它在当前和旧版本的 Android 上都能获得类似的行为。