¡Te damos la bienvenida a la Vista previa para desarrolladores de Android 13! Envíanos tus comentarios y ayúdanos a hacer de Android 13 la mejor versión hasta el momento.

Uso de recursos de batería

Android 13 presenta las siguientes medidas de preservación de la batería:

Actualizaciones cuando una app ingresa al bucket de App Standby "restringido"

A menos que tu app cumpla con los requisitos para una exención, el sistema la colocará en el bucket restringido cuando tenga alguno de los siguientes comportamientos:

  • El usuario no interactúa con la app durante 8 días. Si el usuario interactúa con otra app que se vincula a un servicio de tu app, el sistema considera que esta se "usa".

  • Tu app invoca una cantidad excesiva de transmisiones o vinculaciones durante un período de 24 horas.

  • Tu app consume una cantidad significativa de batería del dispositivo durante un período de 24 horas. Este umbral puede ser diferente en dispositivos con baja RAM.

    Cuando se mide el impacto de tu app en la duración de batería de un dispositivo, el sistema tiene en cuenta el trabajo que realiza tu app en varios lugares, incluidos los siguientes:

    • Trabajos, incluidos los acelerados
    • Receptores de emisiones
    • Servicios en segundo plano
    • Si el sistema almacena en caché el proceso de tu app

La interacción del usuario permite que tu app salga del bucket "restringido"

Cuando el usuario interactúa con la app, lo que incluye las siguientes maneras, el sistema la quita del bucket restringido y lo coloca en un bucket de App Standby diferente:

  • El usuario presiona una notificación que envía la app.

  • El usuario realiza una acción en un widget que pertenece a tu app.

  • El usuario afecta a un servicio en primer plano de tu app cuando presiona un botón multimedia.

  • El usuario se conecta a tu app mientras interactúa con el SO Android Automotive, en el que tu app usa un servicio en primer plano o CONNECTION_TYPE_PROJECTION.

  • Tu app se puede ver en el modo de pantalla en pantalla (PIP).

  • Tu app es una de las apps activas en pantalla (se aplica sobre todo a dispositivos de pantalla grande).

Nuevas limitaciones para el uso restringido de batería en segundo plano

Las versiones existentes de Android ofrecen a los usuarios la posibilidad de ajustar la cantidad de trabajo que pueden hacer las apps mientras se ejecutan en segundo plano. Las siguientes opciones aparecen en la página Uso de la batería dentro de la configuración del sistema:

  • Sin restricciones: Permite los trabajos en segundo plano, que podrían consumir más batería.
  • Optimizado (predeterminada): Optimiza la capacidad de una app para realizar trabajos en segundo plano, según la forma en que el usuario interactúe con la app.
  • Restringida: Prioriza la duración de batería del dispositivo en lugar de la versatilidad de la app. Establece más limitaciones respecto de lo que puede hacer una app en segundo plano.

A partir de Android 9 (nivel de API 28), las apps que se colocan en estado "restringido" tienen las siguientes limitaciones:

  • No pueden iniciar servicios en primer plano.
  • Los servicios en primer plano existentes se quitan de este primer plano.
  • No se activan alarmas.
  • No se ejecutan trabajos.

Cuando tu app se orienta a Android 13, el sistema no entrega ninguna de las siguientes transmisiones hasta que se inicia por otros motivos:

  • BOOT_COMPLETED
  • LOCKED_BOOT_COMPLETED

Notificación del sistema por uso excesivo de batería en segundo plano

Android 13 introduce una notificación del sistema que aparece cuando tu app consume una gran cantidad de batería del dispositivo durante un período de 24 horas. Esta nueva notificación aparece para todas las apps en dispositivos que ejecutan Android 13, más allá de la versión del SDK de destino.

Cuando se mide el impacto de tu app en la duración de batería de un dispositivo, el sistema tiene en cuenta el trabajo que realiza tu app en varios lugares, incluidos los siguientes:

Si aparece esta notificación para tu app, no volverá a aparecer en el mismo dispositivo hasta al menos 24 horas después.

Notificación del sistema para servicio en primer plano de larga duración

Si el sistema detecta que tu app ejecuta un servicio en primer plano durante un período prolongado (al menos 20 horas dentro de un período de 24 horas), envía una notificación al usuario para invitarlo a interactuar con el Administrador de tareas de servicios en primer plano (FGS). La notificación contiene el siguiente texto:

APP is running in the background for a long time. Tap to review.

El sistema no muestra esta notificación si el tipo de servicio en primer plano es FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK o FOREGROUND_SERVICE_TYPE_LOCATION.

Además, si tu app ejecuta un servicio en primer plano de tipo FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK o FOREGROUND_SERVICE_TYPE_LOCATION durante más de 4 horas en un período de 24 horas, el sistema no enviará notificaciones de larga duración para ningún servicio en primer plano que inicie tu app.

Exenciones

En las siguientes situaciones, se exime a las apps de todas las medidas de preservación de la batería que se introdujeron en Android 13:

En las siguientes situaciones, se exime a tu app de ingresar al bucket de App Standby "restringido" y se permite que la app omita el activador de 8 días de inactividad:

En las siguientes situaciones, se exime a tu app de la mayoría de las medidas de preservación de la batería que se introdujeron en Android 13, pero se impide que el sistema envíe una notificación por un servicio en primer plano de larga duración:

Pruebas

En las siguientes secciones, se muestran algunas formas de probar el modo en que las medidas de preservación de la batería que se introdujeron en Android 13 afectan a tu app.

Cómo evitar el uso en segundo plano

Para evitar que la app pueda ejecutarse en segundo plano, ejecuta el siguiente comando en una ventana de terminal:

adb shell cmd appops set PACKAGE_NAME RUN_ANY_IN_BACKGROUND deny

Cómo colocar la app en un bucket restringido

Para forzar al sistema que coloque tu app en el bucket restringido, ejecuta el siguiente comando en una ventana de terminal:

adb shell am set-standby-bucket PACKAGE_NAME restricted