Intern
Qual é a diferença entre um serviço em segundo plano e um serviço em segundo plano no Android?
sobes.tech IA
Resposta da IA
A diferença entre um serviço em segundo plano normal e um serviço em segundo plano limitado (restricted) surgiu com o Android 8.0 (API 26).
Serviço em segundo plano normal:
- Pode funcionar indefinidamente em segundo plano.
- O sistema pode terminá-lo por falta de recursos, mas pode reiniciá-lo se
START_STICKYfor retornado emonStartCommand(). - Não requer notificações visíveis ao usuário (embora isso não seja a melhor prática do ponto de vista de UX).
- Pode consumir recursos significativos de bateria e CPU.
Serviço em segundo plano limitado (restrições aplicadas):
- Um serviço iniciado em segundo plano sem atividades visíveis ou outras "listas brancas" (condições privilegiadas) enfrenta restrições no uso de recursos.
- As principais restrições incluem:
- Restrição na execução em segundo plano: O sistema pode parar o serviço em pouco tempo (geralmente alguns minutos) após a aplicação passar para o segundo plano.
- Proibição de iniciar novos serviços em segundo plano: A aplicação em segundo plano não pode iniciar novos serviços em segundo plano usando
startService(). Em vez disso, deve usarJobSchedulerouWorkManager. - Restrição na recepção de mensagens broadcast: As mensagens broadcast implícitas no manifesto serão ignoradas. A aplicação deve registrar explicitamente receptores de broadcast ou usar
JobScheduler/WorkManagerpara lidar com eventos.
- O objetivo dessas restrições é melhorar a duração da bateria e o desempenho do dispositivo, limitando o uso irracional de recursos por aplicações em segundo plano.
Como um serviço se torna não limitado (ativo aos olhos do sistema):
- A aplicação está em primeiro plano (o usuário interage ativamente com ela).
- A aplicação inicia um serviço visível (foreground service), que exibe uma notificação constante ao usuário.
- A aplicação realiza tarefas específicas (por exemplo, processamento de mensagens broadcast, execução de tarefas
JobScheduler) que temporariamente a retiram do estado de trabalho irracional completo em segundo plano.
Diferença principal: Com Android 8.0 e versões superiores, um serviço que funciona em segundo plano sem atividade visível do usuário ou serviço visível será limitado pelo sistema em termos de acesso a recursos e capacidade de trabalhar por longos períodos. O "serviço em segundo plano" normal antes do Android 8.0 podia funcionar sem essas restrições estritas.