AlarmManager запускает PendingIntent слишком рано

Я искал уже 3 дня, но не нашел решения или похожей проблемы /вопрос в другом месте. Вот сделка:

Триггер через 1 час -> работает правильно

Триггер через 2 часа -> Срабатывает через 1:23

Триггер через 1 день -> Срабатывает через ~11:00

Так почему же AlarmManager такой непредсказуемый и всегда слишком быстрый? Или что я делаю не так? И есть ли другой способ, чтобы он работал корректно?

Вот как я регистрирую свой PendingIntent в AlarmManager (урезанный):

AlarmManager alarmManager = (AlarmManager)parent.getSystemService(ALARM_SERVICE);
Intent myIntent = new Intent(parent, UpdateKlasRoostersService.class);
PendingIntent pendingIntent = PendingIntent.getService(parent, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

//Set startdate of PendingIntent so it triggers in 10 minutes
Calendar start = Calendar.getInstance();
start.setTimeInMillis(SystemClock.elapsedRealtime());
start.add(Calendar.MINUTE, 10);

//Set interval of PendingIntent so it triggers every day
Integer interval = 1*24*60*60*1000;

//Cancel any similar instances of this PendingIntent if already scheduled
alarmManager.cancel(pendingIntent);

//Schedule PendingIntent
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, start.getTimeInMillis(), interval, pendingIntent);
//Old way I used to schedule a PendingIntent, didn't seem to work either
//alarmManager.set(AlarmManager.RTC_WAKEUP, start.getTimeInMillis(), pendingIntent);

Было бы здорово, если бы у кого-нибудь было решение. Спасибо за любую помощь!

Обновление: 2 часа назад сработало его срабатывание с интервалом в 2 часа, но после этого оно срабатывало через 1:20 часа. Это становится действительно странным. Я отследю триггеры с помощью файла журнала и опубликую его здесь завтра.

Обновление: PendingIntent планируется запускать каждые 3 часа. Из второй строки журнала кажется, что старый запланированный PendingIntent все еще выполняется:

[2012-5-3 2:15:42 519] Updating Klasroosters
[2012-5-3 4:15:15 562] Updating Klasroosters
[2012-5-3 5:15:42 749] Updating Klasroosters
[2012-5-3 8:15:42 754] Updating Klasroosters
[2012-5-3 11:15:42 522] Updating Klasroosters

Но я уверен, что отменил запланированный PendingIntent, прежде чем запланировать новый. И каждый PendingIntent воссоздается по-разному, поэтому он должен быть точно таким же. Если нет, то этот вопрос темы больше не актуален.

6
задан Wezelkrozum 3 June 2012 в 10:37
поделиться