O assunto do momento é esse que está no título. E o questionamento é feito por mim mesmo. Basta pensar um pouquinho para saber que um aplicativo gratuito que exiba propaganda vai consumir mais bateria que o mesmo aplicativo sem banner.

Os motivos são simples: para exibir um banner é preciso uma conexão com a internet. E isso gasta energia. Se a conexão disponível for em 3G, mais energia ainda. Muitas bibliotecas de propaganda usam informações a mais para tentar personalizar mais ainda o banner, como geolocalização (usando o GPS, e adivinha? Mais bateria!).

Tudo isso sem contar que ao mesmo tempo o jogo está rodando, e a menos que você tenha um aparelho com mais de um núcleo no processador, ele será obrigado a parar o que está fazendo para fazer outra coisa. Não se iluda: não existe multiprocessamento num aparelho que contém apenas um núcleo no processador! É impossível!! Não tem como uma única coisa fazer duas ao mesmo tempo. Mas como eles são rápidos o usuário nem percebe. Multitarefa não significa multiprocessamento.

E fazer mais coisas em menos tempo implica em velocidades mais altas do processador, que implica, adivinhe só, em consumo de bateria! E nesse caso também implica em aquecimento do aparelho, que também implica numa piora do uso da carga que a bateria possui!!! Pois é: quanto mais quente o aparelho, mais gasto de energia.

O que chama a atenção neste caso é o valor do gasto a mais. Segundo um dos textos que li, no teste feito num dos níveis do Angry Birds, cerca de 70% da energia consumida foi utilizada para exibir os banners (entre enviar e receber dados do servidor e exibir a propaganda em si) e apenas 30% com o jogo.

Esses valores assustam! A princípio eu imaginei que poderia ter algo errado ou com o método para chegar aos números ou até uma certa má fé (já que segundo o mesmo texto um dos participantes da pesquisa é a Microsoft….muito interessada em denegrir a imagem do Android). Mas por outro lado não acho impossível que seja verdade, pois muitos desenvolvedores infelizmente usam bibliotecas de propagandas de terceiros ao invés de usar a da Google (por diversos motivos, mas principalmente acho que pagam mais). E o que garante que essas bibliotecas estão bem feitas, pensando em primeiro lugar na própria qualidade do código?

Eu já havia notado que o Angry Birds, quando exibindo propaganda, esquentava um bocado o aparelho e às vezes até o deixava lento! Notei isso depois que instalei a versão gratuita do Market ao invés da versão sem banners da Amazon, num Nexus S.

Todo desenvolvedor precisa ter algumas coisas em mente ao fazer um app para aparelhos móveis, como não usar bibliotecas em excesso (principalmente para coisas em que a biblioteca é dispensável), já que elas ocupam espaço de armazenamento e espaço de memória, e principalmente: testar seu programa para ver se não está consumindo recursos em excesso.