为什么报警管理器中的setInexactRepeating触发不当

时间:2016-10-07 07:05:15

标签: android alarmmanager alarm android-alarms repeatingalarm

这很奇怪,方法setInexactRepeating大约在给定时间而不是精确时间触发的原因是什么。

我需要在特定时间每天触发警报,我已经说过了

example.com -> [elb public dns]:8080  
example2.com -> [elb public dns]: 9000

我已将时间设定在日历上午8:30,当我将设备日转移到第二天时,即使在我将设备时间转移到上午8:30之前,警报也会立即触发。

这里发生了什么,为什么我无法使用此api进行精确触发,如果您有任何经验,可以分享您的经验。谢谢!

1 个答案:

答案 0 :(得分:1)

根据文件(here),有文字:

  

如上所述,选择警报类型通常是第一步   制造警报。另一个区别是你需要多精确   报警。对于大多数应用程序,setInexactRepeating()是正确的选择。   当您使用此方法时,Android会同步多个不精确的内容   重复警报并同时触发它们。这减少了   耗尽电池。

     

对于具有严格时间要求的罕见应用程序 - 例如,   警报需要在上午8:30精确射击,每小时射击一次   之后 - 使用setRepeating()。但是你应该避免使用精确的警报   如果可能的话。

     

使用setInexactRepeating(),您无法指定自定义间隔   你可以使用setRepeating()。你必须使用其中一个间隔   常量,例如INTERVAL_FIFTEEN_MINUTES,INTERVAL_DAY等。

我希望它可以帮助你。在我给你的前一个链接中也有一个小例子。