Ответ
Самовыгорание (battery drain) — частая проблема в Android. Основные причины:
- WakeLocks – удержание процессора в активном состоянии.
- Частые сетевые запросы – особенно без оптимизации (например, polling вместо FCM).
- Утечки ресурсов – незакрытые
Cursor,BroadcastReceiver,Service. - Геолокация – частые обновления без
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 для отложенных задач.