安卓如何设置过去的日期闹钟

6

如果我添加一个警报,但将起始日期设置为过去的日期会发生什么?

它是否会立即执行还是被放入队列中并且永远不会执行?

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent);

3
请尝试并测试一下,非常简单 :) - MilapTank
使用setInexactRepeating代替setRepeating - user3145373 ツ
7个回答

8

根据文档,如果开始时间(startDate)已经过去了,闹钟会立即触发。


6

如果日期已过,则会立即触发警报。但是,您可以尝试使用setInexactRepeating代替setRepeating

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent);

根据setInexactRepeating()文档

安排一个拥有不精确触发时间要求的重复闹钟;例如,每小时重复一次的闹钟,但不一定在每个小时的顶部。


1

实际上,AlarmManager 是根据当前时间工作的。 因此,当您设置过去日期的闹钟时,AlarmManager 将会执行。

public void onReceive(Context context, Intent intent)
{
}

方法。


0

AlarmManager.set和AlarmManager.setInexactRepeating都调用了setImpl方法,传递了它们接收到的触发时间作为参数(在Android 7.1.2源代码中进行了检查)。 -->如果触发时间已经过去,那么这两种方法没有任何区别。


0
据我所知,AlarmManager.set会在时间设置为过去的时间时立即执行,文档也是这么说的。但是对于AlarmManager.setInexactRepeating,文档中缺少这句话,即当它被设置为过去的时间时,该闹钟不会触发,而是会从给定的时间开始,在下一个间隔时间触发。

0
我认为闹钟设置仅限于小时(至少通过Android用户界面),而不是特定的一天,这样它就会在您设置的确切“小时:分钟”开始。

0
从我之前使用AlarmManager的经验来看,过去的日期会立即触发警报。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接