Bateria é recurso precioso em dispositivos móveis. Apps que drenam bateria são desinstalados e mal avaliados. Este guia apresenta as causas de consumo excessivo e técnicas para criar apps eficientes em energia.
Por Que Bateria Importa
Experiência do Usuário
Ninguém quer app que mata a bateria. Frustração leva a uninstall.
Avaliações
"Drena bateria" aparece em reviews negativas frequentemente.
Restrições do Sistema
iOS e Android limitam apps que consomem demais. Background termination.
Causas de Consumo Excessivo
Background Activity
Processos rodando quando app não está em uso.
Localização Constante
GPS é um dos maiores consumidores. Use só quando necessário.
Network Requests
Requisições frequentes, especialmente com tela desligada.
Wake Locks
Manter CPU ou tela acordada indevidamente.
Animações Pesadas
Animações complexas exigem GPU. Use moderadamente.
Processamento Intensivo
Cálculos pesados, decodificação de mídia.
Push Notifications Excessivas
Cada notificação acorda o dispositivo.
Monitorando Consumo
Android
Battery Historian, Android Studio Profiler.
iOS
Xcode Energy Gauge, Instruments energy log.
Métricas
CPU time, network activity, location updates, wakeups.
Otimização de Rede
Batching
Agrupe requisições em vez de fazer uma por uma.
Compression
Dados menores = menos tempo de transmissão.
Caching
Evite requisições repetidas. Cache agressivo.
Prefetch Inteligente
Baixe dados quando conectado e em Wi-Fi.
Exponential Backoff
Falhas não devem causar retry agressivo.
Otimização de Localização
Precisão Adequada
Use a menor precisão necessária. High accuracy consume muito.
Geofencing
Deixe sistema notificar quando entrar em região. Não poll constantemente.
Significant Location Changes
Para iOS, alternativa eficiente a updates contínuos.
Fused Location Provider
Para Android, balanceia precisão e consumo.
Parar Quando Desnecessário
Remova listeners quando não precisa mais.
Background Work
iOS
Background App Refresh limitado. BGTaskScheduler para tarefas.
Android
WorkManager para tarefas deferrable. Respeite Doze mode.
Princípio Geral
Faça o mínimo necessário. Complete e durma.
Evite Polling
Use push/websockets em vez de polling constante.
Wake Locks
O Que São
Impedem CPU ou tela de dormir.
Riscos
Wake lock esquecido = bateria drenada.
Boas Práticas
Minimize duração, libere imediatamente, use timeouts.
Android
Prefira JobScheduler ou WorkManager.
Animações Eficientes
Hardware Acceleration
Use quando possível. GPU mais eficiente que CPU para gráficos.
Frame Rate
60fps é suave, mas consome. Reduza quando aceitável.
Animações Offscreen
Pause animações não visíveis.
Lottie
Animações vetoriais eficientes.
Rendering
Layouts Simples
Hierarquias profundas são custosas. Flattenize.
RecyclerView/List
Recicle views. Não recrie constantemente.
Overdraw
Evite desenhar pixels múltiplas vezes. Inspecione com ferramentas.
Push Notifications
Prioridade Correta
Normal priority para não urgentes. Batch no servidor.
Payload Pequeno
Menos dados = menos processamento.
Silent Push
Para sync em background. Não acorde tela desnecessariamente.
Media
Codec Eficiente
H.265/HEVC mais eficiente que H.264 em muitos casos.
Resolution Adequada
Não decodifique 4K para thumbnail.
Playback
Pause quando não visível. Libere recursos.
Sensores
Use Sob Demanda
Registre listener apenas quando necessário.
Frequência Adequada
Menor frequência possível que atenda requisito.
Batch Delivery
Agrupe leituras para menos wakeups.
Ferramentas de Diagnóstico
Android
- Battery Historian
- Android Studio Profiler
- dumpsys batterystats
iOS
- Xcode Energy Organizer
- Instruments (Energy Log)
- MetricKit
Testes
Cenários Reais
Teste em uso real, não apenas em lab.
Dispositivos Variados
Performance varia entre dispositivos.
Bateria Baixa
Comportamento com 20%, 10%, 5%.
Background Extended
Deixe em background por horas. Meça.
APIs de Sistema
Android
- Doze mode: respeite, teste
- App Standby Buckets: entenda categorias
- Battery Saver: adapte comportamento
iOS
- Low Power Mode: reduza atividade
- Background App Refresh: respeite preferência
- BGTaskScheduler: para tarefas eficientes
Dark Mode
Telas OLED
Pixels pretos estão desligados. Dark mode economiza.
Suporte Nativo
Implemente seguindo guidelines. Sistema adapta.
Erros Comuns
GPS Sempre Ligado
Esquecer de parar updates de localização.
Timer Agressivo
setInterval de 1 segundo desnecessário.
Wake Lock Vazado
Não liberado em exceções ou edge cases.
Debug em Produção
Logs excessivos, features de debug ligadas.
Conclusão
Otimização de bateria é responsabilidade do desenvolvedor. Monitore consumo, minimize background, use APIs eficientes e teste em condições reais. Usuários agradecem, e ficam.
FAQs
1) Como saber se meu app consome muita bateria? Use ferramentas de profiling. Compare com apps similares.
2) Background é o maior problema? Frequentemente sim. Atividade com tela desligada é muito custosa.
3) GPS consome quanto? É um dos maiores consumidores. Use precisão mínima necessária.
4) Dark mode realmente economiza bateria? Em telas OLED, sim significativamente. LCD, não.
5) Como testar consumo de bateria? Use profilers, teste em dispositivos reais, simule uso prolongado.
Leia também
- Otimização de Performance Mobile: Guia Completo
- Otimizacao De Performance Mobile - Exemplos Reais Para Iniciantes
- Consumo de Bateria em Apps: Comparativo com Casos Reais
- Consumo de Bateria em Apps: Comparativo e Checklist
- Consumo de Bateria em Apps: Comparativo e Guia Rapido
- Desenvolvimento Nativo Android: Como Fazer Passos Essenciais