如果时间早于android中的当前系统时间,则会触发警报
Posted
技术标签:
【中文标题】如果时间早于android中的当前系统时间,则会触发警报【英文标题】:Alarm fires if the time is eariler than the current system time in android 【发布时间】:2013-11-13 06:56:52 【问题描述】:我正在使用警报管理器在特定时间分配警报。我遇到了一个问题,如果我设置的时间早于当前系统时间,那么警报动作将立即触发。如何防止这种行为?谢谢
我的代码:
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent serviceIntent = new Intent(context,AlarmService.class);
PendingIntent pendingIntent = PendingIntent.getService(context.getApplicationContext(), 234324243, serviceIntent, 0);
/*sample of setting eariler time
timeAlarm.set(Calendar.YEAR, 2013);
timeAlarm.set(Calendar.MONTH, 10);
timeAlarm.set(Calendar.DAY_OF_MONTH, 13);
timeAlarm.set(Calendar.HOUR_OF_DAY, 12);
timeAlarm.set(Calendar.MINUTE, 9);
timeAlarm.set(Calendar.SECOND, 0);
*/
alarmManager.set(AlarmManager.RTC_WAKEUP, timeAlarm.getTimeInMillis(), pendingIntent);
【问题讨论】:
【参考方案1】:这是因为android报警管理器就是这样设计的。 如果时间比当前系统时间早 1 天或更长时间,您可以修改您的时间。 像这样:
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, hour);
c.set(Calendar.MINUTE, minute);
c.set(Calendar.SECOND, second);
if (c.getTimeInMillis() < System.currentTimeMillis())
c.add(Calendar.DAY_OF_MONTH, 1);
【讨论】:
当系统时间和日历的小时和分钟时间相同但秒数不同时,此代码会出现问题。它会增加一天,这是错误的。以上是关于如果时间早于android中的当前系统时间,则会触发警报的主要内容,如果未能解决你的问题,请参考以下文章
Stripe 创建使用记录错误 - 时间戳必须早于订阅的当前周期结束时间 - Date.now()?