Ответ
AlarmManager позволяет выполнять операции по расписанию, даже когда приложение не активно. Основные особенности:
- Точность: Начиная с Android 6.0 (API 23), все алармы неточные (
setInexactRepeating()), кромеsetExact(). Doze mode и App Standby могут задерживать срабатывание. - Типы алармов:
RTC_WAKEUP– пробуждает устройство.RTC– срабатывает в указанное время, но не будит устройство.
- PendingIntent: Для BroadcastReceiver или Service.
- WorkManager альтернатива: Для фоновых задач лучше использовать WorkManager (гибче и энергоэффективнее).
Пример:
val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
val intent = Intent(this, MyReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(this, 0, intent, FLAG_IMMUTABLE)
alarmManager.setExact(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 5000,
pendingIntent
)