Сталкивался ли с самовыгоранием

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

Ответ

Самовыгорание (battery drain) — частая проблема в Android. Основные причины:

  1. WakeLocks – удержание процессора в активном состоянии.
  2. Частые сетевые запросы – особенно без оптимизации (например, polling вместо FCM).
  3. Утечки ресурсов – незакрытые Cursor, BroadcastReceiver, Service.
  4. Геолокация – частые обновления без FusedLocationProvider.

Пример оптимизации WakeLock:

val wakeLock = powerManager.newWakeLock(
    PowerManager.PARTIAL_WAKE_LOCK, 
    "MyApp::MyWakeLockTag"
).apply {
    acquire(10_000) // Таймаут на 10 сек
    // ... работа
    release() // Обязательно освободить!
}

Инструменты для анализа:

  • Battery Historian
  • Profiler в Android Studio
  • adb shell dumpsys batterystats

Важно минимизировать фоновую активность и использовать WorkManager для отложенных задач.