Intervalos de App Standby

Android 9 (API nivel 28) presenta una nueva función de administración de la batería, Intervalos de App Standby. Esta función ayuda al sistema a priorizar las solicitudes de recursos que hacen las apps según el momento y la frecuencia en que estas se usan. En función de los patrones de uso de las apps, se coloca cada una en uno de los cinco intervalos de prioridad. El sistema limita los recursos del dispositivo que están disponibles para cada app según el intervalo en el que estas se encuentran.

Intervalos de prioridad

El sistema asigna de forma dinámica cada app a un intervalo de prioridad y reasigna las apps según sea necesario. El sistema puede depender de una app precargada que utiliza el aprendizaje automático para determinar la probabilidad de uso de cada app y asigna las apps a los intervalos apropiados. Si no está la app del sistema en el dispositivo, el sistema establece de forma predeterminada la clasificación de las apps en función de su uso reciente. Se asignan más apps activas a los intervalos que otorgan mayor prioridad a las apps, lo que hace que haya más recursos del sistema disponibles para estas. En particular, el intervalo determina con qué frecuencia se ejecutan los trabajos de la app, con qué frecuencia la app puede activar alarmas y con qué frecuencia puede recibir mensajes de alta prioridad de Firebase Cloud Messaging. Estas restricciones se aplican solo mientras el dispositivo funciona con batería; el sistema no impone estas restricciones a las apps cuando se está cargando el dispositivo.

Nota: Cada fabricante puede establecer sus propios criterios sobre cómo se asignan las apps no activas a los intervalos. No debes intentar influir en a qué intervalo se asigna tu app. En cambio, concéntrate en asegurarte de que tu app tenga un buen funcionamiento en cualquier intervalo en el que se encuentre. Tu app puede averiguar en qué intervalo se encuentra actualmente llamando a UsageStatsManager.getAppStandbyBucket().

Los siguientes son los posibles intervalos:

  • Activo: La app está en uso o se usó muy recientemente.
  • Conjunto de tareas: Se está haciendo un uso habitual de la app.
  • Frecuente: Se usa con frecuencia la app, pero no todos los días.
  • Poco frecuente: No se usa con frecuencia la app.

Además, hay un intervalo especial nunca para la apps que se instalaron, pero que nunca se ejecutaron. El sistema impone restricciones severas a estas apps.

Nota: Las apps que se incluyen en la lista blanca de Descanso están exentas de las restricciones basadas en Intervalos de App Standby.

Nota: Las siguientes descripciones corresponden al caso no predictivo. Por el contrario, cuando se utiliza el aprendizaje automático para predecir el comportamiento, se eligen los intervalos antes de las próximas acciones del usuario, y no en función del uso reciente. Por ejemplo, una app que se usó recientemente podría terminar en un intervalo poco frecuente porque el aprendizaje automático predice que no se usará la app durante varias horas.

Activo

Una app está en el intervalo activo si el usuario la está usando o si la usó recientemente. Por ejemplo:

  • La app inició una actividad.
  • La app está ejecutando un servicio en primer plano.
  • La app tiene un adaptador de sincronización asociado con un proveedor de contenido que es utilizado por una app en primer plano.
  • El usuario hace clic en una notificación de la app.

Si una app está en el intervalo activo, el sistema no impone a los trabajos restricciones, alarmas ni mensajes de FCM.

Conjunto de tareas

Una app está en el intervalo conjunto de tareas si se ejecuta con frecuencia, pero actualmente no está activa. Por ejemplo, es probable que una app de redes sociales que el usuario inicia casi todos los días esté en funcionamiento. Las apps también se incluyen en el conjunto de tareas si se usan de manera indirecta.

Si una app está en el conjunto de tareas, el sistema impone restricciones leves en cuanto a su capacidad para ejecutar trabajos y activar alarmas. A fin de obtener más información, consulta Restricciones para la administración de batería.

Frecuente

Una app está en el intervalo frecuente si se usa con frecuencia, pero no necesariamente todos los días. Por ejemplo, se podría incluir en el intervalo frecuente una app de seguimiento de entrenamiento que el usuario ejecuta en el gimnasio.

Si una app se encuentra en el intervalo frecuente, el sistema impone restricciones más fuertes en cuanto a su capacidad para ejecutar trabajos y activar alarmas, y también impone un límite a los mensajes de FCM de alta prioridad. A fin de obtener más información, consulta Restricciones para la administración de batería.

Poco frecuente

Una app está en el intervalo poco frecuente si no se usa con frecuencia. Por ejemplo, una app de un hotel que el usuario solo ejecuta mientras se aloja en ese hotel puede estar en un intervalo poco frecuente.

Si una app se encuentra en el intervalo poco frecuente, el sistema impone restricciones estrictas en cuanto a su capacidad para ejecutar trabajos, activar alarmas y recibir mensajes de FCM de alta prioridad. Además, el sistema limita la capacidad de la app de conectarse a Internet. A fin de obtener más información, consulta Restricciones para la administración de batería.

Prácticas recomendadas

Si tu app ya sigue las prácticas recomendadas para Descanso y App Standby, no debería resultar difícil el manejo de las nuevas funciones de administración de batería. Sin embargo, el comportamiento de algunas apps que antes funcionaban bien ahora puede causar problemas.

  • No intentes manipular el sistema para poner tu app en un solo intervalo. Los métodos de agrupamiento del sistema pueden cambiar, y cada fabricante de dispositivos puede diseñar su propia app de agrupamiento con su propio algoritmo. En cambio, debes asegurarte de que tu app se comporte de manera correcta, sin importar en qué intervalo se encuentre.
  • Si una app no tiene una actividad de lanzamiento, es posible que nunca se incluya en el intervalo activo. Tal vez te convenga rediseñar tu app para tener esta actividad.
  • Si las notificaciones de la app no son prácticas, los usuarios no podrán activar la inclusión de la app en el intervalo activo cuando interactúen con las notificaciones. En este caso, quizá te convenga rediseñar algunas notificaciones apropiadas para que permitan una respuesta del usuario. Para ver algunos lineamientos, consulta los patrones de diseño de las notificaciones de Material Design.
  • Del mismo modo, si la app no muestra una notificación al recibir un mensaje de FCM de alta prioridad, no le dará al usuario la oportunidad de interactuar con la app e incluirla en el intervalo activo. De hecho, el único uso previsto para los mensajes de FCM de alta prioridad es enviar una notificación al usuario, por lo que esta situación nunca debería ocurrir. Si marcas de manera incorrecta un mensaje de FCM como de prioridad alta cuando no activa la interacción con el usuario, puede haber otras consecuencias negativas. Por ejemplo, tu app puede agotar su cuota, lo que hace que los mensajes de FCM realmente urgentes se traten como de prioridad normal.

    Nota: Si el usuario descarta una notificación en forma reiterada, el sistema le brinda la opción de bloquear esa notificación en el futuro. No envíes spam al usuario con notificaciones solo para tratar de mantener tu app en el intervalo activo.

  • Si se dividen las apps en varios paquetes, estos pueden estar en diferentes intervalos y, por lo tanto, tener diferentes niveles de acceso. Asegúrate de probar esas apps con los paquetes asignados a varios intervalos a fin de asegurarte de que la app se comporte correctamente.