如果我添加一个警报,但将起始日期设置为过去的日期会发生什么?
它是否会立即执行还是被放入队列中并且永远不会执行?
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent);
如果我添加一个警报,但将起始日期设置为过去的日期会发生什么?
它是否会立即执行还是被放入队列中并且永远不会执行?
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent);
如果日期已过,则会立即触发警报。但是,您可以尝试使用setInexactRepeating
代替setRepeating
:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent);
安排一个拥有不精确触发时间要求的重复闹钟;例如,每小时重复一次的闹钟,但不一定在每个小时的顶部。
实际上,AlarmManager 是根据当前时间工作的。 因此,当您设置过去日期的闹钟时,AlarmManager 将会执行。
public void onReceive(Context context, Intent intent)
{
}
方法。
AlarmManager.set和AlarmManager.setInexactRepeating都调用了setImpl方法,传递了它们接收到的触发时间作为参数(在Android 7.1.2源代码中进行了检查)。 -->如果触发时间已经过去,那么这两种方法没有任何区别。
AlarmManager
的经验来看,过去的日期会立即触发警报。
setInexactRepeating
代替setRepeating
。 - user3145373 ツ