AlarmManager все чаще откладывает точные повторяющиеся сигналы тревоги ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
AlarmManager все чаще откладывает точные повторяющиеся сигналы тревоги

Сообщение Anonymous »

Я разрабатываю приложение для внутренних нужд, которое должно запускать некоторый код до 100 раз каждые ~5 минут. Поэтому я использую AlarmManager.
Я объявляю разрешения в манифесте: А вот функция, с помощью которой я поставил будильник. На основе некоторой логики RequestsReceiver либо запланирует, либо нет следующий сигнал тревоги для идентификатора запроса:

Код: Выделить всё

fun scheduleRequest(requestId: Long, timestamp: Long) {

val intent = Intent(app, RequestsReceiver::class.java).apply {
putExtra(EXTRA_REQUEST_ID, requestId)
}

alarmManager.setExactAndAllowWhileIdle(
AlarmManager.RTC_WAKEUP,
timestamp,
PendingIntent.getBroadcast(
app,
requestId.hashCode(),
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
)
}
На моем Samsung Galaxy s8 (api 28) он проработал как положено около 9 часов, после чего начал ставить будильники каждые 10 минут вместо 6, потом стало 1,5 часа и так далее . Кажется, на Xiaomi Android 14 он откладывает следующий будильник на 1 час, а затем может запустить некоторые из них по назначению.
Я нахожу только информацию о том, что будильники являются неточными и не откладываются намеренно, есть ли какие-либо объяснения и способ обходной путь?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ing-alarms

Вернуться в «Android»