【问题标题】:AlarmManager doesn't starts at the right time even when the clock matches the time即使时钟与时间匹配,AlarmManager 也不会在正确的时间启动
【发布时间】:2013-07-04 02:36:27
【问题描述】:

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

我在这里缺少什么? 谢谢

【问题讨论】:

    标签: android calendar alarmmanager


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多