O consumo excessivo de bateria — uma das queixas mais frequentes dos usuários de aplicativos móveis. O aplicativo começa a consumir uma quantidade anormal de energia, causando descarga rápida do dispositivo mesmo em segundo plano. Segundo o Google I/O 2023, até 30% dos aplicativos na Google Play têm problemas de consumo de energia que afetam diretamente a retenção de usuários. Neste artigo, analisaremos as causas, o diagnóstico e os métodos de otimização.
Pontos principais
O consumo excessivo de bateria é uma condição na qual um aplicativo móvel consome significativamente mais energia do que o esperado em cenários típicos de uso. O usuário percebe que o dispositivo descarrega 20-30% mais rápido após instalar ou atualizar um aplicativo.
Os sistemas operacionais móveis modernos — Android e iOS — possuem mecanismos integrados de controle de consumo de energia. O Android usa Battery Optimization, e o iOS usa Background Modes. No entanto, o uso incorreto das APIs pode contornar esses mecanismos.
De acordo com a pesquisa da Purdue University (2021), cerca de 60% dos aplicativos consomem energia para tarefas em segundo plano sem necessidade óbvia. Isso é especialmente comum em aplicativos com anúncios, análises e conexões de rede persistentes.
O consumo de energia é medido em mA·h (miliamperes-hora). O Android fornece dados através da API BatteryManager, que rastreia o consumo de cada componente: CPU, módulo de rádio, GPS, tela e sensores.
val batteryManager = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
val chargeCounter = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
val capacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
// chargeCounter / capacity * 100 = current charge percentage
A API BatteryManager permite obter a carga atual e a capacidade da bateria, mas não fornece detalhes por aplicativo — para isso são necessárias utilitários do sistema.
WakeLock — o mecanismo mais perigoso para a bateria. Se um aplicativo mantém um WakeLock sem liberá-lo, o dispositivo não entra em modo de suspensão. Cada hora de retenção de WakeLock consome cerca de 50-80 mA·h.
Requisições de rede sem agrupamento são a segunda causa mais comum. Cada vez que um aplicativo estabelece uma conexão de rede, o módulo de rádio passa do modo de economia de energia para o modo ativo. Requisições curtas frequentes com intervalo inferior a 5 minutos mantêm o módulo de rádio constantemente ativo.
A determinação de localização GPS de alta precisão (GPS_PROVIDER) consome 10-15 vezes mais energia que a localização aproximada (NETWORK_PROVIDER). Atualizações constantes de localização em segundo plano são uma das principais queixas dos usuários.
Segundo o Android Developers Blog, um aplicativo médio consome cerca de 15% do consumo total de bateria do dispositivo. Exceder esse nível requer uma auditoria obrigatória do consumo de energia.
Battery Historian — a ferramenta oficial do Google para análise de consumo de energia. Ele recebe dumps do BatteryStats do ADB e visualiza o consumo por componente: CPU, Rede, GPS, WakeLock e Tela.
Para criar um dump, execute o comando: adb shell dumpsys batterystats. Após coletar dados por 2-3 horas de uso normal, você pode carregar o relatório no Battery Historian para análise.
Android Energy Profiler no Android Studio monitora o consumo de energia em tempo real. Ele mostra o consumo de CPU, Rede, GPS e Tela para cada operação do aplicativo.
# Reset battery stats before test
adb shell dumpsys batterystats --reset
# Use the app for 2-3 hours
# Export dump for Battery Historian
adb shell dumpsys batterystats > batterystats_dump.txt
Para iOS, utiliza-se Energy Log através do Xcode Instruments. Ele coleta dados de consumo de energia divididos por módulo: CPU, Rede, GPU, Tela, Localização. Tempo de leitura: 15-30 minutos por análise de sessão.
Em um dispositivo iOS físico, as estatísticas de consumo de energia também são mostradas em Settings > Battery. Se um aplicativo está entre os 10 principais em consumo — é um sinal para otimização.
WorkManager — a API padrão para tarefas em segundo plano que considera o estado da bateria, rede e modo Doze. Ele garante a execução da tarefa em condições ideais em vez de imediatamente, economizando até 40% de energia em operações em segundo plano.
val workRequest = OneTimeWorkRequestBuilder<SyncWorker>()
.setConstraints(
Constraints.Builder()
.setRequiresCharging(true)
.setRequiresBatteryNotLow(true)
.setRequiresNetworkType(NetworkType.CONNECTED)
.build()
)
.build()
WorkManager.getInstance(this).enqueue(workRequest)
Agrupamento de requisições — combinar várias operações de rede em uma única sessão de comunicação. Em vez de 10 requisições separadas, o aplicativo faz uma requisição em lote, reduzindo o tempo ativo do módulo de rádio de 30 segundos para 2-3 segundos.
FusedLocationProviderClient do Google Play Services seleciona a fonte de localização ideal com base na precisão necessária. Para tarefas em segundo plano, use a prioridade PRIORITY_BALANCED_POWER_ACCURACY — isso fornece precisão de até 100 metros com consumo mínimo de bateria.
No iOS, use Significant Location Change em vez de Continuous Location. Isso permite receber atualizações apenas em movimento significativo (mais de 500 metros), em vez de a cada poucos segundos.
Android Battery Historian — a ferramenta web do Google para visualização de dados do BatteryStats. Suporta importação de dumps, componentes codificados por cores e comparação de sessões. Métricas principais: tempo de retenção de WakeLock, atividade do módulo de rádio, sessões de GPS.
Xcode Energy Organizer coleta dados de consumo de energia de usuários de produção através do TestFlight e App Store. Você recebe um relatório sobre o consumo médio em diferentes dispositivos e versões do iOS. Isso permite rastrear regressões após atualizações.
PerfDog (Tencent) — uma ferramenta multiplataforma de teste de desempenho que inclui medições de consumo de energia. Suporta iOS e Android, permite gravar métricas a 1-10 quadros por segundo.
| Ferramenta | Plataforma | Métricas |
|---|---|---|
| Battery Historian | Android | WakeLock, Rede, GPS, CPU, Tela |
| Energy Profiler | Android Studio | CPU, Rede, GPS, Rádio em tempo real |
| Energy Log | iOS (Xcode) | CPU, Rede, GPU, Tela, Localização |
| PerfDog | iOS + Android | Energia, FPS, CPU, Memória (todos juntos) |
De acordo com a Apple WWDC 2023, o uso do Energy Organizer reduz o consumo médio de energia dos aplicativos em 15-25% ao identificar e corrigir regressões antes do lançamento na App Store.
Perguntas frequentes
Redes sociais e mensageiros (Facebook, Instagram, WhatsApp, Telegram) tradicionalmente lideram em consumo de energia. Eles sincronizam constantemente dados, atualizam o feed, recebem notificações push e usam GPS. Em segundo lugar estão os jogos com gráficos 3D que carregam GPU e CPU simultaneamente, consumindo até 400-600 mA·h por hora de jogo ativo.
Sim, diretamente. A tela é o componente mais intensivo em energia de um smartphone. Aumentar a frequência de 60 Hz para 120 Hz aumenta o consumo de energia da tela em 30-50%. No entanto, telas modernas com tecnologia LTPO mudam dinamicamente a frequência de 1 a 120 Hz dependendo do conteúdo, reduzindo o impacto na bateria.
O GPS de alta precisão consome cerca de 200-300 mA·h por hora de operação contínua. Para comparação, a determinação de localização por Wi-Fi e torres de celular (NETWORK_PROVIDER) consome apenas 20-40 mA·h no mesmo período. Use a API Geofencing para ativar o GPS apenas ao entrar em uma área específica.
Não. Os sistemas operacionais modernos (Android e iOS) otimizam os processos em segundo plano por conta própria. Fechar à força um aplicativo e reiniciá-lo consome mais energia do que se o aplicativo permanecesse em segundo plano. A exceção são aplicativos que causam problemas explicitamente (determinado pelas estatísticas de bateria nas configurações).
Abra Settings > Battery > Battery Usage. O sistema mostrará uma lista de aplicativos com a porcentagem de consumo. Para análise detalhada, use ADB: adb shell dumpsys batterystats e carregue o dump no Battery Historian. Isso mostrará não apenas o consumo total, mas também uma divisão por componentes (WakeLock, Rede, GPS).
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também