[英]Android setting alarm to a past date
如果我添加警报但将开始日期设置为过去日期会发生什么?
是立即执行还是放入队列并且从未执行过?
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent);
从文档中 ,如果startDate时间是过去的,则会立即触发警报。
如果日期是过去那么警报将立即触发。 但是,您可以尝试使用setInexactRepeating
而不是setRepeating
:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent);
安排具有不精确触发时间要求的重复警报; 例如,每小时重复一次的警报,但不一定在每小时的顶部重复。
实际上AlarmManager适用于当前时间。 因此,当您设置过去日期警报时,AlarmManager将执行
public void onReceive(Context context, Intent intent)
{
}
方法。
我认为警报只设置了几个小时(至少通过Android用户界面),而不是特定的一天,这样它将在你设置的确切hour:minute
开始。
我可以从我之前使用AlarmManager
经验中得出结论。 过去的日期会立即触发警报。
据我所知,当时间设置为过去时间时, AlarmManager.set将立即执行,文档说明了这一点。 AlarmManager.setInexactRepeating缺少此句子,此警报在设置为过去时间时不会触发,它将在下一个时间间隔触发,从给定时间开始。
AlarmManager.set和AlarmManager.setInexactRepeating都调用setImpl,它们作为参数传递了triggertime(在Android 7.1.2源中检查)。 - >两种方法没有区别,如果过去是三卦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.