A documentação de serviços em primeiro plano descreve o comportamento atual dos serviços em primeiro plano do Android. A documentação oferece orientações sobre as práticas recomendadas para a maioria dos apps, sejam eles destinados à versão mais recente do Android ou não.
Nesta página, descrevemos algumas das mudanças importantes mais recentes nos serviços em primeiro plano e as implicações para apps que não segmentam a versão mais recente da plataforma Android. Em muitos casos, as práticas recomendadas que eram opcionais para apps destinados a níveis mais baixos da API se tornam obrigatórias para apps destinados a níveis mais altos.
Android 16 (nível 36 da API)
As mudanças a seguir se aplicam a apps executados no Android 16 ou versões mais recentes, seja qual for o nível da API de destino:
Os jobs em segundo plano iniciados em um serviço em primeiro plano agora precisam aderir às respectivas cotas de ambiente de execução. Isso inclui jobs programados diretamente com
JobScheduler, bem como jobs criados por outras bibliotecas, como WorkManager ouDownloadManager.Para transferir dados em resposta a uma ação do usuário, use um job de transferência de dados iniciada pelo usuário. Esses jobs estão isentos das cotas de jobs comuns.
Android 15 (nível 35 da API)
Os requisitos a seguir se aplicam a apps destinados ao nível 35 ou mais recente da API:
- Há novas restrições sobre o tempo de execução de um serviço em primeiro plano do
dataSync. Essas restrições são descritas em Comportamento de tempo limite do serviço em primeiro plano. Restrições semelhantes se aplicam ao tipo de serviço em primeiro planomediaProcessing, novo no Android 15. - Os serviços em primeiro plano do
BOOT_COMPLETEDnão podem mais iniciar determinados serviços em primeiro plano. - Os apps que têm a permissão
SYSTEM_ALERT_WINDOWsó podem iniciar serviços em primeiro plano em segundo plano se tiverem uma janela de sobreposição visível ou se atenderem a uma das outras isenções de restrições de início em segundo plano. Antes, a isenção para esses apps era mais ampla.
Android 14 (nível 34 da API)
Os requisitos a seguir se aplicam a apps que segmentam o nível 34 ou mais recente da API:
- É necessário declarar todos os serviços em primeiro plano com os respectivos tipos de serviço.
- Os apps precisam solicitar o tipo de permissão adequado para o tipo de trabalho que o
serviço em primeiro plano vai realizar. Cada tipo de serviço em primeiro plano
tem um tipo de permissão correspondente. Por exemplo, se um app inicia um
serviço em primeiro plano que usa a câmera, é necessário solicitar as permissões
FOREGROUND_SERVICEeFOREGROUND_SERVICE_CAMERA. Se um app for direcionado ao nível 34 da API ou mais recente e não solicitar a permissão específica adequada, o sistema vai gerar umaSecurityException.
Android 12 (nível 31 da API)
Os requisitos a seguir se aplicam a apps que segmentam o nível 31 ou mais recente da API:
- Os apps não podem iniciar serviços em primeiro plano enquanto estão em segundo plano, com algumas exceções específicas. Para mais informações e detalhes sobre as exceções a essa regra, consulte Restrições para iniciar um serviço em primeiro plano em segundo plano.
Android 11 (nível 30 da API)
Os requisitos a seguir se aplicam a apps que segmentam o nível 30 ou mais recente da API:
- Se os serviços em primeiro plano de um app usarem a câmera ou o microfone, o app precisará
declarar o serviço com o tipo de serviço
cameraoumicrophone, respectivamente.
Android 10 (nível 29 da API)
Os requisitos a seguir se aplicam a apps que segmentam o nível 29 ou mais recente da API:
- Se os serviços em primeiro plano de um app usarem informações de localização, o app precisará
declarar o serviço com o tipo de serviço
location.
Android 9 (nível 28 da API)
O Android 9 apresenta a permissão
FOREGROUND_SERVICE. Os apps executados no
Android 9 que usam serviços em primeiro plano precisam ter essa permissão.
Se um app destinado ao nível desejado da API 28 ou mais recente tentar criar um serviço em primeiro plano sem solicitar a permissão FOREGROUND_SERVICE, o sistema vai gerar uma SecurityException.