我有一个带有RTC闹钟的应用程序。目前,我在每天早上8点设置闹钟。我的问题是,当警报开始时(下午4点)说,它会考虑过去的开始时间(上午8点),因此会运行。如何防止闹钟在启动时运行时间过长
我希望闹钟只能在上午8:00左右运行,但如果在一天晚些时候启动,则不会运行。任何想法如何?
我有一个带有RTC闹钟的应用程序。目前,我在每天早上8点设置闹钟。我的问题是,当警报开始时(下午4点)说,它会考虑过去的开始时间(上午8点),因此会运行。如何防止闹钟在启动时运行时间过长
我希望闹钟只能在上午8:00左右运行,但如果在一天晚些时候启动,则不会运行。任何想法如何?
我建议你使用calendar.add(Calendar.DAY_OF_YEAR, 1);
研究下面的代码:
Calendar calendar = Calendar.getInstance();
// 9 AM
calendar.add(Calendar.DAY_OF_YEAR, 1); ///to avoid firing the alarm immediately
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
PendingIntent pi = PendingIntent.getService(context, 0,
new Intent(context, MyClass.class),PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pi);
您正在使用setInexactRepeating
或setRepeating
,对吧?所以要处理这种情况,只需比较两次:当前时间(毫秒)和(上午8:00,当天)(以毫秒为单位)。如果第一次超过第二次,那么你应该触发你的闹钟(第二天上午8点),否则 - (上午8点,当天)。
聪明的想法,但你肯定的是,如果代码ü晚上11:00写道运行,它上午9:00还会被称为早上?它只是添加1天给我的印象是它会延迟1天 –
@MahmoudBadri是的,我100%确定,我已经测试过这一行代码。 – Kedarnath
好吧,我接受这个答案,因为它更容易,虽然nikis的答案更准确,但在我的情况下,我想要更容易 –