Como melhorar a performance de um aplicativo Android quando ele executa serviços em segundo plano
Isso depende do que seu serviço faz, vamos pegar um exemplo de um serviço que é lançado a cada 15 minutos usando o Alarm Manager(Inexact Repeating) para verificar se há novos dados do servidor e baixá-los para serem substituídos pelos dados antigos.
Neste cenário de caso vamos:
- Obter as informações dos dados>li>>Li>Verifica a data para os novos dadosLi>Se novos. Armazene os dados
- li>Retria nos próximos 15 minutos.
Existem poucas dicas para melhorar o desempenho do seu serviço:
- >li>Cheque a conexão à internet: E se o aparelho estiver offline? O serviço irá simplesmente continuar a tentar obter os dados do servidor e isso consumirá bateria/performance, podemos simplesmente eliminar todas as tarefas se o dispositivo estiver offline.>
- Se o dispositivo estiver online e os dados estiverem acima de 2 Mb podemos eliminar o download directo de dados e verificar apenas ajustando o nosso servidor para notificar novas alterações de dados fazendo um simples pedido que retorna menos de 5 Kb com os resultados para que possamos escolher se queremos ou não fazer o download dos dados.
Ao fazer estas simples alterações o fluxo de trabalho do serviço será assim:
- Check for internet connectivity.
- Envie um pedido de GET ao servidor para obter o valor Booleano de se devemos ou não baixar os novos dados.
- Se sim, baixe e armazene os dados.
Seguindo isto você terá um simples entendimento de como preservar o desempenho/vida útil da bateria. Certifique-se sempre de que o serviço é construído para usar pequenos recursos (CPU/MEM/NETWORK).
Artigos semelhantes
- Posso fazer um aplicativo web que roda no Android como modo de primeiro plano, por exemplo, trabalhar em segundo plano mesmo quando fecho o navegador?
- O que acontece se você recarregar a Airtel com um segundo plano de rede com o primeiro plano de rede ainda ativo?
- Quando eu forço a parar um aplicativo Android, todas as permissões dos aplicativos ainda rodam em segundo plano?
- Posso fazer um aplicativo como o Snapchat com C#/Xamarin.forms e executá-lo no iOS e Android? Como?