我尝试使用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
之前触发。请指出错过的内容。谢谢,
答案 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);