Android AlarmManager setReating和setInexactRepeating

时间:2014-02-20 15:18:38

标签: android alarmmanager repeatingalarm

我已经准备好通过文档,我有一些关于setReating和setInexactRepeating的问题。我正在阅读其他一些帖子,但我找不到答案。

文档说明了两者:

  

注意:从API 19开始,所有重复警报都不准确。

是否意味着两种方法在api 19及以上版本中完全相同?不精确是多么不准确?如果有任何延迟,对下面的警报有什么影响?

提前感谢。

1 个答案:

答案 0 :(得分:1)

从API 19 [和未来版本]的official documentation末尾可以阅读,setRepeating()的所有来电都将委托给setInexactRepeating()。因此,从KitKat和即将推出的版本来看,这两种方法完全相同。

延迟不会影响以下报警,参考official documentation

  

安排具有不准确触发时间要求的重复警报;   例如,每小时重复一次的警报,但不一定是   每小时的最高点。这些警报比电源更节能   传统上由setRepeating提供的严格重复(int,long,   long,PendingIntent),因为系统可以调整警报的传递   时间使它们同时发射,避免唤醒设备   从睡眠中得到的不必要。

     

您的闹钟的第一次触发不会在请求的时间之前,但是   在此之后几乎整整一段时间内可能不会发生。在   另外,同时重复报警的整个周期将为   请求,任何两次连续发出警报之间的时间   可能会有所不同。如果您的应用需要非常低的抖动,请使用一次性   用适当的窗口报警;见setWindow(int,long,   long,PendingIntent)和setExact(int,long,PendingIntent)。

     

从API 19开始,所有重复警报都不准确。因为这种方法   从API 3开始提供,您的应用程序可以安全地调用它   并确保它在当前和现在都会得到类似的行为   旧版Android。