Если бы писал приложение будильник, то с какими проблемами столкнулся

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

Ответ

Проблемы при разработке будильника:

  1. Doze Mode и Background Execution Limits – Android ограничивает фоновые процессы. Решение: AlarmManager с setExactAndAllowWhileIdle() или WorkManager для точных срабатываний.

  2. Убийство процесса ОС – Приложение может быть закрыто. Решение: Foreground Service с постоянным уведомлением.

  3. Громкость и режим "Не беспокоить" – Нужно запрашивать разрешение DND_OVERRIDE и управлять аудио (AudioManager).

  4. Правильное время срабатывания – Учитывать RTC (реальное время) vs RTC_WAKEUP (пробуждает устройство).

  5. Перезагрузка устройства – Будильники сбрасываются. Решение: ресивер BOOT_COMPLETED для восстановления.

Пример:

val alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager  
val intent = Intent(this, AlarmReceiver::class.java)  
val pendingIntent = PendingIntent.getBroadcast(this, 0, intent, FLAG_IMMUTABLE)  
alarmManager.setExactAndAllowWhileIdle(  
    AlarmManager.RTC_WAKEUP,  
    triggerTime,  
    pendingIntent  
)