0

我正在尝试制作一个应该在每天 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);

我在这里缺少什么?谢谢

4

1 回答 1

0

DAY_OF_YEAR如果当前时间超过 17:00,则需要将该字段增加一。

Calendar.getInstance()使用当前时间实例化一个新的 Calendar 对象。假设这条线执行时是 7 月 1 日的 18:00。设置小时、分钟和秒后,日历现在将存储 7 月 1 日的 17:00。当您设置警报时,AlarmManager看到这个时间已经过去并立即发出警报。

于 2013-07-03T18:36:27.580 回答