过去,Android闹钟执行了多长时间(为什么!)?

时间:2018-10-12 15:55:17

标签: android alarmmanager android-alarms

我在Android中设置闹钟时感到有些沮丧。我曾尝试设置重复/不重复警报和精确/不精确警报,但这没关系,如果过去曾经设置过警报,则警报会在设置后立即执行。我已经在过去设置了5个小时的警报后进行了测试,并且仍然可以立即执行。

例如:

时间是上午7点,我设置了一个要在凌晨2点执行的警报。显然,这意味着下一次时钟读数为2:00 AM,但这没关系,闹钟在设置后立即在7 AM响起。

下面的代码应选择一个介于1:00 AM和3:59 AM之间的随机时间来设置/执行下一个日历日的警报,然后逻辑循环回去以在执行后再次设置自身。警报将永远重复执行。

    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);

问题:

  1. Android过去什么时候停止执行警报?

  2. 有什么办法可以阻止这种情况?

1 个答案:

答案 0 :(得分:1)

这显然是下次使用” 不适用于计算机,它们将完全按照您的要求执行操作。

calendar.getTimeInMillis()返回自格林尼治标准时间1970年1月1日以来的毫秒数。您不仅需要指定时间,还需要指定闹钟响起的日期。相反,您总是拨打calendar.add(Calendar.DAY_OF_MONTH, 1);(当月的第一天)