En la documentación del servicio en primer plano, se describe el comportamiento actual de los servicios en primer plano de Android. La documentación proporciona orientación sobre las prácticas recomendadas para la mayoría de las apps, ya sea que estén orientadas a la versión más reciente de Android o no.
En esta página, se describen algunos de los cambios importantes más recientes en los servicios en primer plano y las implicaciones para las apps que no están orientadas a la versión más reciente de la plataforma de Android. En muchos casos, las prácticas recomendadas que eran opcionales para las apps orientadas a niveles de API más bajos se vuelven obligatorias para las apps orientadas a niveles de API más altos.
Android 16 (nivel de API 36)
Los siguientes cambios se aplican a las apps que se ejecutan en Android 16 o versiones posteriores, independientemente del nivel de API al que estén orientadas:
Las tareas en segundo plano que se inician desde un servicio en primer plano ahora deben cumplir con sus respectivas cuotas de tiempo de ejecución. Esto incluye las tareas programadas directamente con
JobScheduler, así como las tareas creadas por otras bibliotecas, como WorkManager oDownloadManager.Para transferir datos en respuesta a una acción del usuario, considera usar una tarea de transferencia de datos iniciada por el usuario. Estas tareas están exentas de las cuotas de tareas ordinarias.
Android 15 (nivel de API 35)
Los siguientes requisitos se aplican a las apps orientadas al nivel de API 35 o versiones posteriores:
- Existen nuevas restricciones sobre el tiempo que puede ejecutarse un servicio en primer plano
dataSync. Estas restricciones se describen en Comportamiento de tiempo de espera del servicio en primer plano. Se aplican restricciones similares al tipo de servicio en primer planomediaProcessing(nuevo en Android 15). - Los servicios en primer plano
BOOT_COMPLETEDya no pueden iniciar ciertos servicios en primer plano. - Las apps que tienen el permiso
SYSTEM_ALERT_WINDOWsolo pueden iniciar servicios en primer plano desde el segundo plano si actualmente tienen una ventana superpuesta visible (o si cumplen con una de las otras exenciones de las restricciones de inicio en segundo plano). Anteriormente, la exención para esas apps era más amplia.
Android 14 (nivel de API 34)
Los siguientes requisitos se aplican a las apps orientadas al nivel de API 34 o versiones posteriores:
- Debes declarar todos los servicios en primer plano con sus tipos de servicio.
- Las apps deben solicitar el tipo de permiso adecuado para el tipo de trabajo que realizará el servicio en primer plano. Cada tipo de servicio en primer plano
tiene un tipo de permiso correspondiente. Por ejemplo, si una app inicia un
servicio en primer plano que usa la cámara, debes solicitar los permisos
FOREGROUND_SERVICEyFOREGROUND_SERVICE_CAMERA. Si una app está orientada al nivel de API 34 o versiones posteriores y no solicita el permiso específico adecuado, el sistema arroja unaSecurityException.
Android 12 (nivel de API 31)
Los siguientes requisitos se aplican a las apps orientadas al nivel de API 31 o versiones posteriores:
- Las apps no pueden iniciar servicios en primer plano mientras la app está en segundo plano, con algunas excepciones específicas. Para obtener más información y sobre las excepciones a esta regla, consulta Restricciones para iniciar un servicio en primer plano desde el segundo plano.
Android 11 (nivel de API 30)
Los siguientes requisitos se aplican a las apps orientadas al nivel de API 30 o versiones posteriores:
- Si los servicios en primer plano de una app usan la cámara o el micrófono, la app debe
declarar el servicio con el tipo de servicio
cameraomicrophone, respectivamente.
Android 10 (nivel de API 29)
Los siguientes requisitos se aplican a las apps orientadas al nivel de API 29 o versiones posteriores:
- Si los servicios en primer plano de una app usan información de ubicación, la app debe
declarar el servicio con el
locationtipo de servicio.
Android 9 (nivel de API 28)
Android 9 presenta el
FOREGROUND_SERVICE permiso. Las apps que se ejecutan en Android 9 y usan servicios en primer plano deben tener ese permiso.
Si una app orientada al nivel de API 28 o versiones posteriores intenta
crear un servicio en primer plano sin solicitar el FOREGROUND_SERVICE
permiso, el sistema arroja una SecurityException.