Я использую этот код для настройки будильника в нашем бизнес-приложении:
private void setupAlarm() {
final Context c = getApplicationContext();
final AlarmManager alarm =
(AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
final Intent i = new Intent(c, AlarmReceiver.class);
final PendingIntent sender =
PendingIntent.getBroadcast(c, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
final long startFromNow = System.currentTimeMillis()+10000;
final long timer = 5*60*1000;
alarm.setRepeating(AlarmManager.RTC_WAKEUP, startFromNow, timer, sender);
}
Я не могу понять, почему интервал для тревоги не соблюдается. Первый сигнал тревоги запускается через 10 секунд (как и ожидалось), затем он срабатывает каждые 2 минуты и немного (от 122 секунд до 127 секунд), что неверно. Интервал 5 минут или я не прав?
Я использую этот точный код в более простом приложении: одно действие, которое устанавливает повторяющуюся тревогу, а получатель просто создает журнал. Там это работает.
Что может заставить AlarmManager действовать так по-другому?
Я пытался:
- используйте
set()
, а в приемнике будильника используйте другой set()
более 5 минут: запуск через 2 минуты
- используйте
setInexactRepeating()
вместо setRepeating()
: запуск через 2 минуты
Любое понимание было бы полезно. Спасибо!