У меня есть класс scheduleAlarm
, который должен установить будильник в определенное время, однако будильник вызывается сразу после вызова метода. Я проверил, что при условии, что время в миллисекундах прекрасное, поэтому я понятия не имею, что происходит.AlarmManager срабатывает немедленно (в то время как он не должен)
private void scheduleAlarm(int day, int startHour, int startMinute, String info) {
AlarmManager mAlarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, day);
c.set(Calendar.HOUR, startHour);
c.set(Calendar.MINUTE, startMinute);
Intent startIntent = new Intent(this, Recorder.class);
startIntent.putExtra("info", "someinfo");
Log.v("millis", String.valueOf(c.getTimeInMillis())); // time is okay
Random mRandom = new Random();
int randomInt = mRandom.nextInt();
PendingIntent pendingIntent = PendingIntent.getService(this, randomInt, startIntent,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}
Ну, если «день» до сегодняшнего дня, или «час» до этого и т. Д., Вы получите это поведение. – CommonsWare