En la documentación de los servicios en primer plano, se describe el comportamiento actual de los servicios en primer plano de Android. La documentación brinda orientación sobre las prácticas recomendadas para la mayoría de las apps, independientemente de si se orientan a la versión más reciente de Android.
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 segmentan la versión más reciente de la plataforma de Android. En muchos casos, las prácticas recomendadas que eran opcionales para las apps que se segmentaban para niveles de API inferiores se vuelven obligatorias para las apps que se segmentan para niveles de API superiores.
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 se orienten:
Los trabajos 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 los trabajos programados directamente con
JobScheduler
, así como los trabajos creados por otras bibliotecas, como WorkManager oDownloadManager
.Para transferir datos en respuesta a una acción del usuario, considera usar un trabajo de transferencia de datos iniciado por el usuario. Estos trabajos están exentos de las cuotas de trabajos normales.
Android 15 (nivel de API 35)
Los siguientes requisitos se aplican a las apps que segmentan el nivel de API 35 o superior:
- Existen nuevas restricciones sobre el tiempo que puede ejecutarse un servicio en primer plano
dataSync
. Estas restricciones se describen en Comportamiento del tiempo de espera del servicio en primer plano. Se aplican restricciones similares al tipo de servicio en primer planomediaProcessing
(nuevo en Android 15). BOOT_COMPLETED
Los servicios en primer plano ya no pueden iniciar ciertos servicios en primer plano.- Las apps que tienen el permiso
SYSTEM_ALERT_WINDOW
solo pueden iniciar servicios en primer plano desde el segundo plano si actualmente tienen una ventana de superposición 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 que segmentan el nivel de API 34 o uno superior:
- 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_SERVICE
yFOREGROUND_SERVICE_CAMERA
. Si una app se segmenta para el nivel de API 34 o uno superior y no solicita el permiso específico adecuado, el sistema arroja unSecurityException
.
Android 12 (nivel de API 31)
Los siguientes requisitos se aplican a las apps que se segmentan para el nivel de API 31 o superior:
- Las apps no pueden iniciar servicios en primer plano mientras se ejecutan en segundo plano, con algunas excepciones específicas. Para obtener más información y conocer 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 que segmentan el nivel de API 30 o superior:
- 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
camera
omicrophone
, respectivamente.
Android 10 (nivel de API 29)
Los siguientes requisitos se aplican a las apps que segmentan el 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 tipo de servicio
location
.
Android 9 (nivel de API 28)
Android 9 introduce el permiso FOREGROUND_SERVICE
. Las apps que se ejecutan en Android 9 y usan servicios en primer plano deben tener ese permiso.
Si una app que se segmenta para el nivel de API 28 o uno superior intenta crear un servicio en primer plano sin solicitar el permiso FOREGROUND_SERVICE
, el sistema arroja un SecurityException
.