如果我添加闹钟但将开始日期设置为过去的日期会发生什么?
是立即执行还是放入队列并且从未执行过?
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, repeatingValue, alarmIntent);
答案 0 :(得分:7)
从documentation开始,如果startDate时间过去,则会立即触发警报。
答案 1 :(得分:5)
如果日期已过,则会立即触发警报。不过,您可以尝试使用setInexactRepeating
代替setRepeating
:
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startDate, setInexactRepeating , alarmIntent);
安排具有不准确触发时间要求的重复警报; 例如,每小时重复一次的警报,但不一定是 每小时的最高点。
答案 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源中检查)。 - >如果三卦是过去的话,两种方法都没有区别。