8.2 Ahorro de energía adaptativo, Doze y límites de procesos en segundo plano
Ahorro de energía adaptativo (Adaptive Battery)
Adaptive Battery utiliza machine learning para priorizar el consumo de batería según los patrones de uso del usuario y del sistema. Divide las aplicaciones en categorías (activo, frecuente, ocasional, raro) y adapta el acceso a recursos en función de esa clasificación.
- Clasificación de apps: El sistema evalúa el comportamiento de cada aplicación.
- Restricciones dinámicas: Limita el uso de CPU, red y sincronización para apps de baja prioridad.
- APIs relevantes:
- PowerManager.isPowerSaveMode()
- BatteryManager.EXTRA_BATTERY_LOW
- Buenas prácticas:
- Usar
WorkManager
para tareas en segundo plano. - Aplazar tareas no críticas hasta que el dispositivo esté cargando o activo.
- No abusar de
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
a menos que sea esencial.
- Usar
Doze y App Standby
Doze y App Standby son mecanismos que reducen el consumo de batería cuando el dispositivo o la app está inactiva:
-
Doze Mode
- Se activa tras un período sin interacción y con la pantalla apagada.
- El sistema acelera la suspensión de wakelocks, synchros y alarmas.
- En fases avanzadas, restringe completamente la red y las ejecuciones en CPU.
-
App Standby
- Aísla apps que no han sido usadas recientemente.
- Limita tareas en segundo plano y notificaciones push.
- El sistema reevalúa la prioridad según la interacción del usuario.
Para manejar correctamente Doze y App Standby, los desarrolladores deben:
- Registrar
BroadcastReceiver
paraACTION_DEVICE_IDLE_MODE_CHANGED
yACTION_POWER_SAVE_MODE_CHANGED
. - Utilizar
setAndAllowWhileIdle()
osetExactAndAllowWhileIdle()
conAlarmManager
sólo para casos críticos. - Preferir
JobScheduler
oWorkManager
para programar trabajos que puedan esperar.
Límites de procesos en segundo plano
A partir de Android O, el sistema impone límites estrictos a los procesos en segundo plano para preservar batería y memoria:
Estado de la app | Restricciones principales |
Foreground | Sin restricciones especiales. |
Visible | Procesos que contribuyen a UI visible, permiten servicios vinculados. |
Service | Servicios en background pueden ser detenidos tras un tiempo. |
Background | Sin permisos de ejecución prolongada debe usar JobScheduler . |
Idle | Restricciones máximas, similar a Doze. |
Recomendaciones para los desarrolladores:
- Para tareas periódicas o diferidas, emplear
WorkManager
, que gestiona internamente límites y políticas de energía. - Evitar llamar
startService()
desde background usarenqueue()
enJobIntentService
oWorkManager
. - Solicitar excepciones de batería sólo si la funcionalidad lo requiere (
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
). - Monitorizar el estado con
adb shell dumpsys deviceidle
oadb shell dumpsys battery
durante pruebas.
Profundizando sobre: 8.2 Ahorro de energía adaptativo, Doze y límites de procesos en segundo plano
- Android Developers – Optimización para Doze y App Standby: documentación oficial con patrones de implementación, ejemplos y guías prácticas para minimizar el consumo en segundo plano.
- Android Developers – Límites de ejecución en segundo plano: explica las restricciones introducidas a partir de Android 8.0, mejores prácticas y alternativas.
- The Big Nerd Ranch Guide: Android Programming (5ª ed.): incluye un capítulo dedicado a gestión de energía, Doze y App Standby con ejemplos de código y escenarios reales.
- Professional Android (4ª ed.) de Reto Meier: cubre en profundidad técnicas de ahorro de energía adaptativo y el impacto de los límites de servicio y procesos en segundo plano.
- Android Internals: A Confectioner’s Cookbook de Jonathan Levin: análisis a bajo nivel del subsistema de energía de Android y cómo Doze interactúa con el kernel.
- Google I/O 2017 – Sessions: Building Apps That Last y Life of a Background Service disponibles en YouTube, centrándose en Doze, App Standby y límites.
- Medium – Android Performance Bytes: colección de artículos prácticos sobre optimización de consumo, Doze y estrategias para mantener la app viva sin gastar batería.
- Udacity – Curso Gratuito de Android Performance: módulos específicos sobre ahorro de energía, Doze y restricciones en segundo plano con ejercicios guiados.
Deja una respuesta