Android将闹钟设置为过去的日期

时间:2014-08-29 10:12:55

标签: java android alarmmanager alarm

如果我添加闹钟但将开始日期设置为过去的日期会发生什么?

是立即执行还是放入队列并且从未执行过?

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

7 个答案:

答案 0 :(得分:7)

documentation开始,如果startDate时间过去,则会立即触发警报。

答案 1 :(得分:5)

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

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

来自setInexactRepeating() docs

  

安排具有不准确触发时间要求的重复警报;   例如,每小时重复一次的警报,但不一定是   每小时的最高点。

答案 2 :(得分:1)

实际上AlarmManager适用于当前时间。 因此,当您设置过去日期警报时,AlarmManager将执行

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

方法

答案 3 :(得分:0)

我认为警报只设置了几个小时(至少通过Android用户界面设置),而不是特定的一天,这样它就会从您设置的确切hour:minute开始。

答案 4 :(得分:0)

我可以从我之前对AlarmManager的经验中得出结论。过去的日期会立即触发警报。

答案 5 :(得分:0)

据我所知,当时间设置为过去时, AlarmManager.set 将立即执行,文档说明了这一点。 AlarmManager.setInexactRepeating 缺少此句子,当该警报设置为过去时间时,它不会触发,它将从下一个时间间隔开始触发,从给定时间开始。

答案 6 :(得分:0)

AlarmManager.set和AlarmManager.setInexactRepeating都调用setImpl,它们作为参数传递了triggertime(在Android 7.1.2源中检查)。 - >如果三卦是过去的话,两种方法都没有区别。