Какие знаешь особенности AlarmManager

«Какие знаешь особенности AlarmManager» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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
)