8.2 Ahorro de energía adaptativo, Doze y límites de procesos en segundo plano

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.

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:

  1. 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.
  2. 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 para ACTION_DEVICE_IDLE_MODE_CHANGED y ACTION_POWER_SAVE_MODE_CHANGED.
  • Utilizar setAndAllowWhileIdle() o setExactAndAllowWhileIdle() con AlarmManager sólo para casos críticos.
  • Preferir JobScheduler o WorkManager 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 usar enqueue() en JobIntentService o WorkManager.
  • Solicitar excepciones de batería sólo si la funcionalidad lo requiere (REQUEST_IGNORE_BATTERY_OPTIMIZATIONS).
  • Monitorizar el estado con adb shell dumpsys deviceidle o adb 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.

PreviusNext


¿Necesitas ayuda con este punto? Nuestra IA te puede ayudar

  • Hola 👋 , soy la IA de Synzen.org, puedes preguntarme siempre sobre la página donde estás leyendo, yo también la leo, así que puedo ayudarte a entenderlo, expandirlo, ponerte ejercicios…¡y mucho más!
Quiero saber más sobre… ...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *