Quando um aplicativo é executado em fundo, ele consome alguns dos recursos limitados do dispositivo, como a RAM. Isto pode resultar em uma experiência de usuário prejudicada, especialmente se o usuário estiver usando um aplicativo que consome muitos recursos, como jogar um jogo ou assistir a um vídeo. Para melhorar a experiência do usuário, o Android 8.0 (nível 26 da API) impõe limitações sobre o que os aplicativos podem fazer enquanto são executados em segundo plano. Este documento descreve as alterações no sistema operacional, e como você pode atualizar seu aplicativo para funcionar bem sob as novas limitações.
Qual é o serviço no android?
Primeiro atualizar o que é o serviço no Android? Conforme a documentação do andróide:
A
Service
é um componente da aplicação que pode realizar operações de longa duração em segundo plano, e não fornece uma interface de usuário.
Então, fundamentalmente o serviço é a mesma coisa que a atividade, mas não tem o componente UI nela. Portanto, ele não tem que executar animação suave a 60 fps. É por isso que ele pode executar qualquer tarefa por um período de tempo maior que a atividade.
Existem três tipos de serviço:
- Serviço Iniciado – Um serviço é iniciado quando um componente de aplicação (como uma atividade) chama
startService()
. - Serviço vinculado – Um serviço é vinculado quando um componente de aplicação se liga a ele chamando
bindService()
. - Serviço Agendado – Um serviço é agendado quando uma API como a
JobScheduler.
Aplicações em background vs. Foreground:
Para aprender as mudanças de execução em background, precisamos saber primeiro a diferença entre a aplicação em background e em foreground.
Regra geral, sua aplicação será considerada como um serviço em primeiro plano se algum dos três casos abaixo for verdadeiro:
- Sua aplicação tem atividade visível no momento.
- Sua aplicação tem serviço em primeiro plano rodando.
- Sua aplicação está conectada a outra aplicação em primeiro plano ligando o serviço ou consumindo seus provedores de conteúdo.
Se algum dos cenários acima não for verdadeiro na instância atual, sua aplicação é considerada em segundo plano.
Por que precisamos restringir o uso de serviços em segundo plano?
Quando suas aplicações rodam em segundo plano usando serviços, sua aplicação consome dois preciosos recursos: 1) Memória e 2) Bateria.
Estes dois são recursos limitados nos dispositivos móveis e a maioria dos dispositivos de baixo a médio alcance não tem muita memória ou bateria dentro dela.
Suponha, se seu aplicativo estiver fazendo algumas tarefas muito intensas em segundo plano e usando a maior quantidade de RAM para realizar essa tarefa, então isso criará a experiência de usuário muito junky, especialmente se o usuário estiver usando outro aplicativo de recursos intensivos, como jogar um jogo ou assistir a um vídeo em primeiro plano.
Como pela documentação do serviço iniciado a melhor prática é,
Quando a operação está completa, o serviço deve parar por si mesmo.
Mas, muitas aplicações têm serviços em segundo plano em execução longa, que basicamente corre por tempo infinito para manter a conexão socket com o servidor ou monitorar algumas tarefas ou atividade do usuário. Estes serviços criam esgotamento de bateria e também consomem memória constantemente.
De dois lançamentos anteriores do android (a partir de Marshmallow), o Google está a tentar aumentar a duração da bateria e reduzir o consumo de memória utilizado pelas aplicações, introduzindo o modo doze e o modo de espera da aplicação, atrasando a execução em segundo plano por algum tempo se o telefone estiver inactivo.
Mas na maioria das vezes, apesar de conhecer as desvantagens dos desenvolvedores de serviços de longa duração, ainda os utiliza. (Principalmente porque é fácil de implementar e manter ao invés de usar outras soluções de trabalho.)
Deixe uma resposta