Gestión de energía de la plataforma con Doze

Para mejorar la duración de la batería del dispositivo, Android puede afectar el estado del dispositivo monitoreando su uso y estado de alerta. La plataforma puede entrar en un estado de suspensión para pausar la ejecución de actividades mientras el dispositivo no se utiliza.

Acerca de Doze

Doze extiende la duración de la batería al diferir la actividad de red y CPU en segundo plano de la aplicación cuando un dispositivo no se utiliza durante períodos prolongados.

Los dispositivos inactivos en Doze entran periódicamente en una ventana de mantenimiento, durante la cual las aplicaciones pueden completar el trabajo pendiente (sincronizaciones, trabajos, etc.). Luego, Doze reanuda el modo de suspensión por un período de tiempo más largo, seguido de otra ventana de mantenimiento. La plataforma continúa la secuencia de sueño/mantenimiento de Doze, aumentando la duración del tiempo de inactividad cada vez, hasta alcanzar un máximo de unas pocas horas de sueño. En todo momento, un dispositivo en Doze permanece consciente del movimiento y abandona inmediatamente Doze si se detecta movimiento.

Android 7.0 y versiones posteriores amplían Doze para activar un conjunto más ligero de optimizaciones cada vez que un usuario apaga la pantalla del dispositivo, incluso cuando el usuario continúa moviéndose, lo que permite una mayor duración de la batería.

Los fabricantes de dispositivos generalmente configuran los servicios críticos del sistema para que estén exentos de Doze. Los usuarios también pueden eximir aplicaciones específicas de Doze usando el menú Configuración. Sin embargo, las aplicaciones exentas pueden provocar que se agote la batería del dispositivo. De forma predeterminada, Doze está deshabilitado en AOSP; Para obtener detalles sobre cómo habilitar Doze, consulte Integración de Doze .

Requisitos de sueño

La compatibilidad con Doze requiere que el dispositivo tenga un servicio de mensajería en la nube, como Firebase Cloud Messaging (FCM) . Los eventos de activación externos, como los mensajes en la nube, pueden activar temporalmente las aplicaciones para que funcionen mientras el dispositivo permanece en modo Inactivo.

La compatibilidad con Full Doze también requiere un detector de movimiento significativo (SMD) en el dispositivo; sin embargo, el modo Doze liviano en Android 7.0 y versiones posteriores no requiere un SMD. Si Doze está habilitado en un dispositivo que:

  • Tiene un SMD y se producen optimizaciones completas de Doze (incluye optimizaciones ligeras).
  • No tiene SMD, solo se producen las optimizaciones ligeras de Doze.

Ciclo de vida de Doze

Doze comienza cuando la plataforma detecta que el dispositivo está inactivo y finaliza cuando ocurren una o más actividades de criterios de salida.

La plataforma detecta que un dispositivo está inactivo cuando:

  • El dispositivo está estacionario (usando SMD).
  • La pantalla del dispositivo está apagada durante un tiempo.

El modo Doze no se activa mientras un dispositivo que funciona con batería está conectado a un cargador.

Durante el sueño

La plataforma intenta mantener el sistema en estado de suspensión, reanudando periódicamente las operaciones normales durante una ventana de mantenimiento y luego volviendo a poner el dispositivo en suspensión durante períodos repetidos más prolongados. Durante el sueño, están activas las siguientes restricciones:

  • Las aplicaciones no tienen permitido el acceso a la red.
  • Se ignoran los wakelocks de la aplicación.
  • Se aplazan las alarmas. Excluye las alarmas del despertador y las alarmas configuradas mediante setAndAllowWhileIdle() (limitado a 1 cada 15 minutos por aplicación mientras está en Doze). Esta exención está destinada a aplicaciones (como Calendario) que deben mostrar notificaciones de recordatorio de eventos.
  • No se realizan escaneos de Wi-Fi.
  • Las sincronizaciones SyncAdapter y los trabajos JobScheduler se aplazaron hasta la siguiente ventana de mantenimiento.
  • Las aplicaciones que reciben mensajes SMS y MMS se incluyen en una lista blanca temporal para que puedan completar su procesamiento.

Salida

La plataforma sale del dispositivo de Doze cuando detecta:

  • Interacción del usuario con el dispositivo.
  • Movimiento del dispositivo
  • La pantalla del dispositivo se enciende
  • Alarma inminente AlarmClock

Las notificaciones no hacen que el dispositivo salga de Doze.

Android 7.0 y versiones posteriores amplían Doze al habilitar un modo de suspensión ligero durante la pantalla apagada, antes de que el dispositivo esté inactivo.

Figura 1. Modos Doze para dispositivos estacionarios y no estacionarios.

Acción Dormitar Dormir ligero
Desencadenar Pantalla apagada, con batería, estacionaria Pantalla apagada, con batería (desenchufada)
Momento Períodos progresivamente crecientes con mantenimiento Períodos repetidos de N minutos con ventanas de mantenimiento
Restricciones Sin acceso a la red, bloqueo de activación ni escaneo de GPS/Wi-Fi; alarmas y trabajos/sincronizaciones diferidas Sin acceso a internet; trabajos/sincronizaciones diferidas excepto durante las ventanas de mantenimiento
Comportamiento Solo se reciben mensajes de notificación push de alta prioridad Todos los mensajes en tiempo real (mensajes instantáneos, llamadas, etc.) recibidos; El mensaje de notificación push de alta prioridad permite el acceso temporal a la red.
Salida Alarma de movimiento, pantalla encendida o despertador Pantalla en

Interacción con la aplicación en espera

  • El tiempo pasado en Doze no cuenta para la aplicación en espera.
  • Mientras el dispositivo está en modo Doze, las aplicaciones inactivas pueden realizar operaciones normales al menos una vez al día.

Integrar Doze

Cuando Doze está habilitado, los dispositivos que admiten SENSOR_TYPE_SIGNIFICANT_MOTION realizan optimizaciones completas de Doze (incluidas optimizaciones ligeras); Los dispositivos sin SMD solo realizan optimizaciones Doze ligeras. Android selecciona automáticamente las optimizaciones de Doze apropiadas y no es necesaria la configuración del proveedor.

Para habilitar Doze para un dispositivo:

  1. Confirme que el dispositivo tenga instalado un servicio de mensajería en la nube.
  2. En el archivo de configuración de superposición del dispositivo overlay/frameworks/base/core/res/res/values/config.xml , establezca config_enableAutoPowerModes en true :
    <bool name="config_enableAutoPowerModes">true</bool>
    
    En AOSP, este parámetro está establecido en false (Doze deshabilitado) de forma predeterminada.
  3. Confirme que las aplicaciones y servicios precargados:
  4. Confirmar que los servicios necesarios están exentos de Doze.

Consejos

Probar y optimizar aplicaciones

Pruebe todas las aplicaciones (especialmente las aplicaciones precargadas) en modo Doze. Para obtener más información, consulte Pruebas con Doze y App Standby .