Como poupar bateria num dispositivo Android

De androidPT Wiki
Ir para: navegação, pesquisa

Este artigo pretende explicar as principais intervenientes na autonomia da bateria de um dispositivo com Android. Para um entendimento correcto o leitor deverá ler o artigo na integra, não menosprezando nenhuma das partes, porque, a título de exemplo, várias das coisas que num computador são verdade, deixam de o ser num dispositivo móvel.




Porque não se devem matar aplicações

Ora a grande maioria de nós está habituado a um sistema operativo com multi-tarefa num computador, e uma das práticas que habitualmente se usa para tornar o sistema mais fluído, ou mesmo poupar bateria num portátil ou netbook é terminando aplicações que estão a correr em background (relembrar que uma aplicação diz-se correr em background se estiver a executar e não tiver uma janela ou mensagem de algum tipo aberta que denuncie visualmente ao utilizador a sua execução).

Tendo em conta esta visão, existe uma grande procura no Android Market por aplicações do tipo "task killer". Não é errado ter um task killer em Android, o que é errado é o uso que lhe podem dar, e o uso que geralmente é dado pelos utilizadores menos experientes. Para entender o porquê de usar um task-killer, e quando usar um task-killer temos de falar um pouco de como o Android funciona na gestão de processos (processo é uma aplicação que está a executar). Uma das ideologias muito usadas em Linux é a de manter as aplicações carregadas na memória mesmo depois de terminarem. O porquê é simples, porque se iniciarmos de seguida a mesma aplicação, o sistema operativo não terá de ler de novo a aplicação a partir do armazenamento interno (disco, cartão de memória, etc), e desde modo poupa o trabalho da transferência dos ficheiros da aplicação para a memória RAM, que é tanto dispendioso em tempo como em bateria. Sendo Android um sistema operativo que opera sobre um núcleo de Linux, e porque e um sistema operativo verdadeiramente multi-tarefa, a mesma ideologia foi adoptada, mas com algumas pequenas diferenças que explicaremos mais adiante.

Este método requer, no entanto, que a partir do momento que a memória RAM começa a ficar demasiado cheia, o sistema decida tirar uma ou mais aplicações das que já não estavam em execução, mas continuavam na memória, a fim de existir sempre espaço disponível para que novas aplicações possam ser iniciadas. É na altura de escolher qual dessas aplicações que não estão a executar deve ser tirada, que o Android difere um pouco do Linux, pois tem um modelo concreto especifico à plataforma. ( Para mais detalhes sobre como o sistema decide isto consultar aqui a documentação oficial de Desenvolvimento ).

Antes de explicarmos concretamente aquilo que o título propõe, o leitor tem de ter também a consciência sucinta dos tipos de aplicações Android. As aplicações Android, podem ser iniciadas de várias formas. O mais óbvio é quando são directamente iniciadas pelo utilizador. Mas para além desse, as aplicações podem iniciar em background (plano de fundo, ou seja, não visíveis) através de uma variedade de condições:

  • Temporalmente : Podem iniciar de tempos em tempos pré-definidos, ou numa data específica (um relógio alarme por exemplo)
  • Através de um evento de sistema - a aplicação guarda uma entrada numa tabela do sistema operativo que faz com que este, aquando um determinado evento (mudança de estado de rede, etc) faça com a aplicação inicie com a informação desse evento (por exemplo, uma aplicação meteorológica iniciar para actualizar informações do tempo sempre que o telemóvel muda de localização)
  • Por intermédio de outras aplicações - uma aplicação pode iniciar outra para obter determinada informação ou realizar uma acção


Tendo explicado sucintamente o modelo de gestão de processos do Android, é fácil perceber quando não usar um task-killer, e porque o usar é má prática em vários sentidos. Ora se o utilizador matar uma aplicação, estará a forçar a sua saída da memória RAM. Logo, se por alguma das condições descritas em cima, a aplicação voltar a iniciar, terá de perder tempo a transferir de novo a aplicação para a memória RAM, correr os cálculos de inicialização dessa aplicação, etc. Isto tudo tem um custo muito superior a simplesmente activar uma aplicação que já estava na RAM.


NOTA: Uma aplicação que não está em execução, e está na memória RAM, não faz o dispositivo consumir mais bateria por causa disso.

NOTA 2: Cada utilizador pode comprovar por si próprio que muitas das aplicações que mata são iniciadas automaticamente passado pouco tempo, isto deve-se às condições referidas em cima.


O Android é suficientemente inteligente para saber que aplicações o utilizador usa mais frequentemente, portanto isso será tido em conta quando o sistema se decidir a retirar uma aplicação da memória. A probabilidade de uma aplicação que foi iniciada muitas vezes pelo utilizador OU pelo sistema, ser iniciada no futuro próximo é muito elevada. Portanto ao estar a tentar matar a aplicação, o utilizador apenas a está a forçar ser carregada de novo. Ainda mais crítico é a existência de task-killers que permitem matar automaticamente de tempos a tempos aplicações. Todo este gasto de tempo e bateria é aumentado em muito nesse caso.

Por esta altura o leitor estará a pensar, em porque é que, dado que o sistema operativo é tão bom a gerir todo este processo, o Android oferece a possibilidade de matar um processo. A resposta é simples. Os programadores necessitam de matar as aplicações quando as estão a testar, para que as possam iniciar do zero facilmente, e testar diferentes padrões de comportamento do utilizador, entre outras coisas. A segunda razão, e esse é a única situação em que um utilizador deverá usar um task-killer, é quando uma aplicação parece estar a atrasar o sistema, e não está a acontecer um Force-Close por parte da mesma.


NOTA 3: Para os utilizadores que usam um task-killer com o pretexto de fecharem uma aplicação que não querem a executar, mas que não a conseguem desinstalar porque já vinha com o telemóvel, por favor leiam mais abaixo a secção Desabilitar Aplicações.

Atenção às Wake Locks

O Android tem dois estados de energia no qual trabalha. Sleep (a dormir) ou Awake (acordado). O estado sleep é quando, normalmente, temos o dispositivo com o ecrã desligado, ou porque o utilizador premiu a tecla correspondente para ele ficar neste estado, ou porque o dispositivo excedeu o tempo limite de duração do brilho do ecrã sem receber nenhuma interacção directa por parte do utilizador.

Este estado de sleep tem em vista, entre outras coisas, preservar ao máximo a bateria do dispositivo. O CPU passa a operar a uma frequência mais baixa, o ecrã deixa de estar ligado, e várias operações de desenho são temporariamente suspensas.

Para sair do modo sleep para o modo awake, nem sempre é necessária no entanto interacção do utilizador, uma aplicação pode provocar isto, ou pode mesmo forçar a que o telemóvel não entre no modo sleep até ter terminado de executar. A isto chama-se Wake Lock , e podem consultar aqui a documentação oficial sobre esta funcionalidade.

Ou seja, de modo a poupar bateria, convém ter um dispositivo com menos aplicações que façam Wake Locks possíveis. Felizmente isto é uma tarefa relativamente simples, basta verificar as permissões de uma aplicação aquando a estão a instalar, e verificar se a aplicação requer permissão para acordar o dispositivo.

Se o leitor quiser ver que aplicações actualmente usam a permissão de Wake Lock no seu sistema, o androidPT sugere que instale esta aplicação (ou uma do género): aSpotCat

Boas práticas

Existem algumas práticas de senso comuns que se podem seguir de forma a prolongar a duração da bateria.

  • Descarregar a bateria completamente a cada 30 ciclos, e nos restantes casos não deixar a bateria descer abaixo dos 15%
  • Desligar 3G e Wifi sempre que não forem necessários
  • Colocar o telemóvel em modo de avião se sabem que vão estar numa zona com pouca ou nenhuma cobertura de rede (cinema, túnel longo, etc). Se o telemóvel tiver de procurar por rede constantemente isso tem um gasto superior de bateria
  • Ajustar o brilho de ecrã conforme a luminosidade do local onde se encontram. Ou preferir um telemóvel que tenha sensor de luminosidade e faça isso automáticamente

Aplicações Úteis

  • Screebl Lite : Desliga o ecrã quando o colocamos em repouso pouca após a o termos utilizado
  • Juice Defender : Permite desligar 3G, Wifi .. etc, baseado em vários tipo de condições, desde ligar a Internet apenas de X em X minutos, desligar o tráfego 3G durante a noite, etc.

Indo mais a fundo..

Os tópicos que se seguem podem ser considerados avançados, e falam de assuntos cujo impacto pode ser maior ou menor, dependendo dispositivo em questão. Deste modo, após a leitura dos mesmos o leitor é convidado a ir à secção correspondente do seu dispositivo no fórum do androidPT a fim de procurar e discutir o impacto real na sua situação em concreto, e possivelmente ter acesso a informação mais detalhada sobre cada um dos tópicos. A informação aqui apresentada é válida para todos os dispositivos, e é suficientemente concreta de modo a proporcionar um entendimento correcto da gestão de memória, etc.

A escolha do Hardware

Se ao escolher um dispositivo móvel, a duração da bateria é algo a ter em conta, podem ser feitos certas escolhas que se reflictam numa maior autonomia.

  • AMOLED vs SLCD : Apesar de não haver um estudo que aponte qual o mais energicamente eficiente, os testes comparativos realizados até agora, têm provado que o ecrã AMOLED faz aumentar a autonomia bateria até um máximo de 30%. ( Referência de teste com um HTC Desire, nas mesmas condições, com os dois tipos de ecrã: Engadget diferença AMOLED vs SLCD )
  • Tamanho de ecrã : Um ecrã grande, da mesma tecnologia (AMOLED; SLCD, LCD, etc) que um pequeno, gasta na prática mais que o pequeno
  • Mais mAh : Se o mesmo telemóvel tiver uma variação, em que a única diferença é uma bateria com mais mAh que outra, então é óbvio que a que tem mais mAh é melhor
  • CPU com mnelhores Steppings : Os steppings de um CPU são as frequências no qual ele pode operar. A título de exemplo, o CPU do Samsung Galaxy S é de 1Ghz, mas pode operar a, por exemplo, 100Mhz. Embora a ideia não seja simplesmente procurar o dispositivo que tenha o valor de stepping mais baixo, porque existe um custo de passagem um stepping para outro, este é um facto importante na autonomia da bateria
  • Outros aspectos a ter em conta : Arquitectura do CPU, qualidade dos drivers de software, existência de um sensor de luz para controlo automático da luminosidade do ecrã, versão oficial do Android disponível para o dispositivo

Desactivar aplicações Stock

Esta informação foi movida para uma página própria : Desactivar aplicações Stock

Modificações de Kernel

As modificações de Kernel tratam-se de diferentes compilações de Kernel para um dado dispositivo. A troca de Kernel, e o uso de Kernels diferentes é um hábito comum para quem usa ROMs personalizadas. Um kernel diferente pode ter um impacto significativo na autonomia da bateria. O nível de personalização de um kernel Linux é um tópico muito extenso, e desse modo apenas deixaremos aqui a título de exemplo algumas das coisas que podem entrar em jogo.

  • Um kernel mais limpo : um kernel sem módulos que não são necessários para o dispositivo em questão é um boa prática, embora o impacto disto seja muito relativo aos módulos ignorados e ao dispositivo
  • Diferentes escalonadores : a escolha do escalonador (scheduler) do CPU, da memória interna, e armazenamento têm uma papel muito importante na autonomia e desempenho do dispositivo
  • Flags de compilação : As flags de compilação de um kernel, e o compilador usado, podem fazer uma diferença significativa. A ideia por detrás disto é gerar o kernel o mais apropriado para as características de hardware do dispositivo em questão.
  • Outras modificações possíveis : Diferentes voltagens e frequências de operação de CPU que as de origem, etc