Administración de energía de la plataforma con el modo Descanso

Para mejorar la duración de batería del dispositivo, Android puede afectar el estado del dispositivo supervisando el uso y el estado de activación. La plataforma puede entrar en un estado de suspensión para pausar las actividades que se ejecutan mientras el dispositivo no se usa.

Información acerca del modo Descanso

Doze extiende la duración de batería aplazando la actividad de CPU y de red en segundo plano de las apps cuando un dispositivo no se usa durante períodos prolongados.

Los dispositivos inactivos en Descanso entran periódicamente en un período de mantenimiento, durante el cual las apps pueden completar el trabajo pendiente (sincronizaciones, tareas, etcétera). Luego, el modo Descanso reanuda el modo de suspensión por un período más largo, seguido de otro período de mantenimiento. La plataforma continúa la secuencia de mantenimiento y suspensión de Doze, lo que aumenta la duración del tiempo inactivo cada vez, hasta alcanzar un máximo de unas horas de tiempo de suspensión. En todo momento, un dispositivo en Descanso sigue detectando el movimiento y sale de Descanso de inmediato si se detecta movimiento.

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

Por lo general, los fabricantes de dispositivos configuran los servicios del sistema críticos para que estén exentos de Doze. Los usuarios también pueden eximir apps específicas de Doze mediante el menú de configuración. Sin embargo, eximir apps puede agotar la batería del dispositivo. De forma predeterminada, Doze está inhabilitado en AOSP. Para obtener detalles sobre cómo habilitar Doze, consulta Cómo integrar Doze.

Requisitos de Doze

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 activadores externos, como los mensajes en la nube, pueden activar temporalmente las apps para que realicen tareas mientras el dispositivo permanece en el modo Descanso.

La compatibilidad total con Doze también requiere un detector de movimiento significativo (SMD) en el dispositivo. Sin embargo, el modo Doze ligero en Android 7.0 y versiones posteriores no requiere un SMD. Si el modo Descanso está habilitado en un dispositivo que cumple con las siguientes condiciones:

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

Ciclo de vida de Doze

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.

La plataforma detecta que un dispositivo está inactivo en los siguientes casos:

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

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

Durante el modo Descanso

La plataforma intenta mantener el sistema en un estado de suspensión y, de forma periódica, reanuda las operaciones normales durante un período de mantenimiento y, luego, vuelve a poner el dispositivo en suspensión durante períodos más largos y repetidos. Durante el modo de suspensión, las siguientes restricciones están activas:

  • Las apps no tienen permitido el acceso a la red.
  • Se ignoran los bloqueos de activación de la app.
  • Se aplazan las alarmas. No se incluyen las alarmas de reloj despertador ni las configuradas con setAndAllowWhileIdle() (limitadas a 1 por 15 minutos por app mientras se está en el modo Descanso). Esta exención está destinada a apps (como Calendario) que deben mostrar notificaciones de recordatorios de eventos.
  • No se realizan búsquedas de Wi-Fi.
  • Las sincronizaciones de SyncAdapter y las tareas de JobScheduler se difieren hasta la próxima ventana de mantenimiento.
  • Las apps que reciben mensajes SMS y MMS se colocan en una lista de entidades permitidas temporal para que puedan completar su procesamiento.

Salir

La plataforma sale del modo Descanso del dispositivo cuando detecta lo siguiente:

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

Las notificaciones no hacen que el dispositivo salga del modo Descanso.

Android 7.0 y versiones posteriores extienden Doze habilitando un modo de suspensión ligero durante la pantalla apagada, antes de que el dispositivo esté inactivo.

Figura 1: Modos de Descanso para dispositivos estáticos y no estáticos

Acción Descanso Descanso ligero
Activador Pantalla apagada, con batería, inmóvil Pantalla apagada, con batería (desconectada)
Tiempos Períodos que aumentan de forma sucesiva con mantenimiento Períodos repetidos de N minutos con períodos de mantenimiento
Restricciones Sin acceso a la red, bloqueo de activación ni escaneo de GPS o Wi-Fi; alarmas y tareas o sincronizaciones pospuestas Sin acceso a la red; tareas o sincronizaciones diferidas, excepto durante los períodos de mantenimiento
Comportamiento Solo se reciben mensajes de notificaciones push de prioridad alta Se recibieron todos los mensajes en tiempo real (mensajes instantáneos, llamadas, etcétera). El mensaje de notificación push de prioridad alta habilita el acceso a la red de forma temporal.
Salir Movimiento, pantalla encendida o alarma del reloj Pantalla encendida

Interacción con App Standby

  • El tiempo que se pasa en el modo Descanso no se registra en App Standby.
  • Mientras el dispositivo está en modo Descanso, las apps inactivas pueden realizar operaciones normales al menos una vez al día.

Cómo integrar Descanso

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

Para habilitar Doze en un dispositivo, haz lo siguiente:

  1. Confirma 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, establece config_enableAutoPowerModes como true:
    <bool name="config_enableAutoPowerModes">true</bool>
    
    En AOSP, este parámetro se establece en false (Doze inhabilitado) de forma predeterminada.
  3. Confirma que las apps y los servicios precargados cumplan con los siguientes requisitos:
  4. Confirma que los servicios necesarios estén exentos de Doze.

Sugerencias

Prueba y optimiza apps

Prueba todas las apps (en especial, las precargadas) en el modo Descanso. Para obtener más información, consulta Cómo probar tu app con los modos Descanso y App Standby.