Недавно, в моем приложении таймера, запуск таймера в первый раз вызывает его срабатывание тревоги примерно через две или три секунды после его появления. Странно, что это происходит только в первый раз, когда я запускаю таймер после установки приложения через Android Studio. Каждый раз после этого он работает как ожидалось, и таймер гаснет после ожидаемого времени.Почему будильник AlarmManager задерживается при первом запуске?
Вот соответствующий код:
if(LOG) Log.v(TAG,"Starting the timer service: "+ TimerUtils.time2humanStr(context, mTime));
Intent intent = new Intent(this, TimerReceiver.class);
mPendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmMgr.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + mTime, mPendingIntent);
Переменная mTime
установлена правильно каждый раз, в зависимости от мощности LogCat:
Starting the timer service: 5 seconds
И это прекрасно работает каждый раз после первого запуска. Раньше он работал нормально; это может быть проблемой для Android или Android Studio? Или мне нужно что-то инициализировать? Я знаю, что не могу ожидать точных ответов, не сбрасывая весь мой код здесь, я просто ищу намеки (спекуляции?) О том, почему это поведение может произойти.
Если бы это было так, то почему бы это случиться только в первый раз? Я попытался использовать 'setExact()', и он не изменяется. Я понимаю, что ошибался вовремя; это не двойное, это просто отложено на несколько секунд. – yuttadhammo
Я думаю, что это пример изменения документации, отражающей поведение. Я заметил, что OP описывает задолго до API 19. –