Android 警报在过去执行了多远(以及为什么!)?
How far (and why!) do Android alarms execute in the past?
我在 Android 中设置闹钟时遇到过几次挫折。我试过设置 repeating/non-repeating 闹钟和 exact/inexact 闹钟,但没关系,如果过去曾经设置过闹钟,它会在设置后立即执行。我已经对此进行了测试,早在过去设置了 5 小时的警报并且仍然立即执行。
例如:
时间是早上 7 点,我设置了一个闹钟,在凌晨 2 点执行。这显然意味着下一次时钟显示 2:00 AM,但没关系,闹钟在设置后立即在早上 7 点响起。
下面的代码应该 select 1:00 上午和 3:59 上午之间的随机时间到 set/execute 下一个日历日的闹钟,然后逻辑循环回来执行后再次设置自身。闹钟将永远重复执行。
int randomHour = new Random().nextInt((3 - 1) + 1) + 1;
int randomMinute = new Random().nextInt((59 - 1) + 1) + 1;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, randomHour);
calendar.set(Calendar.MINUTE, randomMinute);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
问题:
过去Android什么时候停止执行报警?
有什么办法可以阻止吗?
"这显然是为下一次准备的" 不适用于计算机,它们会完全按照您的指示进行操作。
calendar.getTimeInMillis()
returns 自格林威治标准时间 00:00:00 1970 年 1 月 1 日以来的毫秒数。您不仅需要指定时间,还需要指定希望闹钟响起的日期。相反,您总是调用 calendar.add(Calendar.DAY_OF_MONTH, 1);
(当月的第一天)
我在 Android 中设置闹钟时遇到过几次挫折。我试过设置 repeating/non-repeating 闹钟和 exact/inexact 闹钟,但没关系,如果过去曾经设置过闹钟,它会在设置后立即执行。我已经对此进行了测试,早在过去设置了 5 小时的警报并且仍然立即执行。
例如:
时间是早上 7 点,我设置了一个闹钟,在凌晨 2 点执行。这显然意味着下一次时钟显示 2:00 AM,但没关系,闹钟在设置后立即在早上 7 点响起。
下面的代码应该 select 1:00 上午和 3:59 上午之间的随机时间到 set/execute 下一个日历日的闹钟,然后逻辑循环回来执行后再次设置自身。闹钟将永远重复执行。
int randomHour = new Random().nextInt((3 - 1) + 1) + 1;
int randomMinute = new Random().nextInt((59 - 1) + 1) + 1;
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, randomHour);
calendar.set(Calendar.MINUTE, randomMinute);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DAY_OF_MONTH, 1);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
问题:
过去Android什么时候停止执行报警?
有什么办法可以阻止吗?
"这显然是为下一次准备的" 不适用于计算机,它们会完全按照您的指示进行操作。
calendar.getTimeInMillis()
returns 自格林威治标准时间 00:00:00 1970 年 1 月 1 日以来的毫秒数。您不仅需要指定时间,还需要指定希望闹钟响起的日期。相反,您总是调用 calendar.add(Calendar.DAY_OF_MONTH, 1);
(当月的第一天)