gpt4 book ai didi

java - AlarmManager 被立即触发,因为时间过去了

转载 作者:行者123 更新时间:2023-11-29 21:44:42 26 4
gpt4 key购买 nike

当启动我的应用程序时,AlarmManager 被立即触发,因为时间已经过去了。

我的想法是用时间表检查实际时间:

if(calendar.before(Calendar.getInstance())); //where calendar is my scheduled calendar

如果上述条件为真则:

calendar.add(Calendar.DAY_OF_YEAR, 1);

我认为这会奏效。

然而,困惑是在第 365 天:

如果预定时间早于实际时间,则会根据此行添加一天:calendar.add(Calendar.DAY_OF_YEAR, 1);它将变成1

那不就让它永远成为过去吗?因为没有366?因此 AlarmManager 总是会立即触发它,考虑到它在过去吗?

编辑:

你建议我改为:

calendar.add(Calendar.HOUR_OF_DAY, 24);

最佳答案

CommonsWare 的评论是正确的; add() 将添加该时间量并适当调整所有字段。

如果您使用 roll() 而不是 add(),就会出现您担心的行为。但是您应该放心使用 add()。

这是 doc如果您想进一步挖掘。

关于java - AlarmManager 被立即触发,因为时间过去了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16203278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com