即使时钟与时间匹配,AlarmManager也不会在正确的时间启动

时间:2013-07-03 18:20:29

标签: android calendar alarmmanager

我正在尝试制作应该每天17点开始的应用。如果我使用“calendar.set()”并让我们说它的18点,我设置它后立即开始报警。另一方面,如果我使用“calendar.add()”它不起作用,我的意思是即使设备时钟与我设置的值匹配,例如17点,警报根本不会启动。

     Calendar calendar = Calendar.getInstance();

 //calendar.add(Calendar.HOUR_OF_DAY, 17);
 //calendar.add(Calendar.MINUTE, 0);
 //calendar.add(Calendar.SECOND, 0);

 calendar.set(Calendar.HOUR_OF_DAY, 17);
 calendar.set(Calendar.MINUTE, 0);
 calendar.set(Calendar.SECOND, 0);

 Intent intent = new Intent(this, MyBroadcastReceiver.class);

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 123, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

我在这里缺少什么? 感谢

1 个答案:

答案 0 :(得分:0)

如果当前时间超过17:00,您需要将DAY_OF_YEAR字段加1。

Calendar.getInstance()使用当前时间实例化一个新的Calendar对象。让我们假装这条线在7月1日18:00开始执行。设置小时,分钟和秒后,日历现在将在7月1日17:00存储。设置闹钟时,AlarmManager会看到此时间已过,并立即触发闹钟。