一旦设置,AlarmManager就会触发

时间:2014-05-29 18:05:59

标签: android alarmmanager android-alarms

我尝试使用00:00:00 AM每天在AlarmManager触发操作,但问题是第一次快速触发操作然后按预期工作。第一次,一旦代码运行就会触发操作。请参阅以下代码:

private void setAlarmManagerForDateChange()
    {
        Intent intent = new Intent(this, DateTimeChangeReceiver.class);
        intent.putParcelableArrayListExtra("names", names);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
                999, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());

        calendar.set(Calendar.HOUR, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.AM_PM, Calendar.AM);

        AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
                24 * 60 * 60 * 1000, pendingIntent);
    }

该动作首次在00:00:00 AM之前触发。请指出错过的内容。谢谢,

1 个答案:

答案 0 :(得分:4)

您正在安排过去的闹钟,这会导致AlarmManager立即触发。

您获取当前日期(例如05/29/14 20:08:32),并将小时,分钟和秒设置为0 你得到的是:05/29/14 00:00:00

您真正想要的是添加另一天来到06/29/14 00:00:00

calendar.add(Calendar.DAY, 1);