Administración de energía de la plataforma

Para mejorar la duración de la batería del dispositivo, Android puede afectar el estado del dispositivo al monitorear el uso y la vigilia del dispositivo. La plataforma puede entrar en un estado de suspensión para pausar la ejecución de actividades mientras el dispositivo no está en uso.

Dormitar

Doze extiende la duración de la batería al diferir la actividad de la red y la CPU en segundo plano de la aplicación cuando un dispositivo no se usa 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 sueño por un período de tiempo más largo, seguido de otra ventana de mantenimiento. La plataforma continúa con la secuencia de suspensión/mantenimiento Doze, aumentando la duración de la inactividad cada vez, hasta alcanzar un máximo de unas pocas horas de suspensión. En todo momento, un dispositivo en Doze permanece al tanto del movimiento e inmediatamente sale de Doze si 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 para dormir

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

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 superior no requiere un SMD. Si Doze está habilitado en un dispositivo que:

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

Doze ciclo de vida

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

Detección

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 alimentado por batería está conectado a un cargador de energía.

durante la siesta

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

  • Las aplicaciones no tienen permitido el acceso a la red.
  • Wakelocks de aplicaciones ignorados.
  • Se aplazan las alarmas. Se excluyen las alarmas del reloj 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 de SyncAdapter y los trabajos JobScheduler hasta la próxima ventana de mantenimiento.
  • Las aplicaciones que reciben mensajes SMS y MMS se colocan 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 con la pantalla apagada, antes de que el dispositivo esté inactivo.

Figura 1. Modos Doze para dispositivos estacionarios y no estacionarios
Acción Dormitar Doze ligero
Generar Pantalla apagada, con batería, fija Pantalla apagada, con batería (desenchufada)
Momento Períodos sucesivamente crecientes con mantenimiento Períodos repetidos de N minutos con ventanas de mantenimiento
Restricciones Sin acceso a la red, bloqueo de activación o exploración 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 recibieron 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 invertido en Doze no cuenta para App Standby.
  • Mientras el dispositivo está en Doze, las aplicaciones inactivas pueden realizar operaciones normales al menos una vez al día.

Integrando Doze

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

Para habilitar Doze para un dispositivo:

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

Puntas

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 .