Android如何处理过去设置的警报

时间:2016-09-20 17:15:21

标签: java android alarmmanager

在我的应用程序中,我想在大约指定的时间触发重复警报以检查某些条件,并在必要时通知用户。

我正在使用以下代码来安排闹钟:

Calendar cal = ...;
...

mAlarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, mAlarmIntent);

我现在注意到(因为我意外地在cal中有错误的一天),如果cal是过去的某个日期/时间,则会立即触发警报。

所以我们说它是2016-09-20 18:00:00,并为2016-09-20 17:00:00安排闹钟。我马上收到通知(或者在安排闹钟后几秒钟)。如果我为2016-09-20 18:15:00等未来时间安排闹钟,则不会发生这种情况。

所以我的问题是:

  1. Android总能赶上错过的警报吗?
  2. 警报计划每天进行。它会在明天17:00:00处重复,还是会在18:00:00重复,因为那是上次触发警报的时间?

1 个答案:

答案 0 :(得分:2)

  

Android总能赶上错过的警报吗?

如果设置的时间过去,那么android会尽快触发警报。 check the docs

  

警报计划每天进行。它会重复吗?   明天17:00:00或将是18:00:00,因为那时是   警报最后被触发了?

下次将按时触发

其他信息:如果使用清除应用数据或强制关闭应用管理器中的应用,则警报不会触发,直到用户再次打开您的应用加上重启也可能导致此问题。