La batteria è una risorsa preziosa nei dispositivi mobili. Le app che scaricano la batteria vengono disinstallate e scarsamente valutate. Questa guida presenta le cause dei consumi eccessivi e le tecniche per creare app ad alta efficienza energetica.
Perché la batteria è importante
Esperienza utente
Nessuno vuole un'app che uccida la batteria. La frustrazione porta alla disinstallazione.
Recensioni
La dicitura "Batteria scarica" appare spesso nelle recensioni negative.
Restrizioni di sistema
iOS e Android limitano le app che consumano troppo. Terminazione dello sfondo.
Cause del consumo eccessivo
Attività in background
Processi in esecuzione quando l'app non è in uso.
Posizione costante
Il GPS è uno dei maggiori consumatori. Utilizzare solo quando necessario.
Richieste di rete
Richieste frequenti, soprattutto a schermo spento.
Attiva i blocchi
Mantenere la CPU o lo schermo attivi in modo improprio.
Animazioni pesanti
Le animazioni complesse richiedono GPU. Utilizzare con parsimonia.
Elaborazione intensiva
Calcoli pesanti, decodifica multimediale.
Notifiche push eccessive
Ogni notifica riattiva il dispositivo.
Monitoraggio dei consumi
###Android
Storico della batteria, profiler di Android Studio.
###iOS
Indicatore di energia Xcode, registro energetico degli strumenti.
Metriche
Tempo della CPU, attività di rete, aggiornamenti di posizione, risvegli.
Ottimizzazione della rete
Raggruppamento
Raggruppa le richieste invece di farle una per una.
Compressione
Dati più piccoli = meno tempo di trasmissione.
Memorizzazione nella cache
Evita richieste ripetute. Caching aggressivo.
Precaricamento intelligente
Scarica i dati quando sei connesso e su Wi-Fi.
Backoff esponenziale
Gli errori non dovrebbero causare nuovi tentativi aggressivi.
Ottimizzazione della posizione
Precisione adeguata
Utilizzare la precisione minima necessaria. L'elevata precisione consuma molto.
Geofencing
Lascia che il sistema ti avvisi quando entri nella regione. Non sondaggi costantemente.
Cambiamenti significativi di posizione
Per iOS, un'alternativa efficiente agli aggiornamenti continui.
Provider di posizioni fuse
Per Android, bilancia precisione e consumo.
Interrompi quando non è necessario
Rimuovi gli ascoltatori quando non ti servono più.
Lavoro in background
###iOS
Aggiornamento dell'app in background limitato. BGTaskScheduler per le attività.
###Android
WorkManager per attività differibili. Rispettare la modalità Doze.
Principio generale
Fai il minimo necessario. Completa e dormi.
Evita i sondaggi
Utilizza push/websocket invece del polling costante.
Attiva i blocchi
Cosa sono
Impedisce la sospensione della CPU o dello schermo.
Rischi
Wakelock dimenticato = batteria scarica.
Buone pratiche
Riduci al minimo la durata, rilascia immediatamente, utilizza i timeout.
###Android
Preferisci JobScheduler o WorkManager.
Animazioni efficienti
Accelerazione hardware
Utilizzare quando possibile. GPU più efficiente della CPU per la grafica.
Frequenza fotogrammi
60fps sono fluidi, ma consumanti. Ridurre quando accettabile.
Animazioni fuori schermo
Metti in pausa le animazioni non visibili.
Lotti
Animazioni vettoriali efficienti.
##Rendering
Layout semplici
Le gerarchie profonde sono costose. Appiattire.
RecyclerView/Elenco
Ricicla le visualizzazioni. Non ricreare costantemente.
Sorpasso
Evitare di disegnare i pixel più volte. Ispezionare con strumenti.
Notifiche push
Priorità corretta
Priorità normale per i casi non urgenti. Batch sul server.
Carico utile ridotto
Meno dati = meno elaborazione.
Spinta silenziosa
Per la sincronizzazione in background. Non riattivare lo schermo inutilmente.
##Media
Codec efficiente
H.265/HEVC è più efficiente di H.264 in molti casi.
Risoluzione adeguata
Non decodificare 4K in miniatura.
Riproduzione
Pausa quando non visibile. Liberare risorse.
Sensori
Usalo su richiesta
Registra l'ascoltatore solo quando necessario.
Frequenza adatta
La frequenza più bassa possibile che soddisfi i requisiti.
Consegna in lotti
Letture di gruppo per meno risvegli.
Strumenti diagnostici
###Android
- Storico della batteria
- Profilo di Android Studio
- Statistiche batteria dumpsys
###iOS
- Organizzatore di energia Xcode
- Strumenti (Registro energetico) -Kit metrico
Test
Scenari reali
Testare nell'uso reale, non solo in laboratorio.
Dispositivi vari
Le prestazioni variano tra i dispositivi.
Batteria scarica
Comportamento con 20%, 10%, 5%.
Sfondo esteso
Lascialo in background per ore. Misura.
API di sistema
###Android
- Modalità Doze: rispetto, prova
- App Standby Buckets: comprendi le categorie
- Risparmio batteria: adatta il comportamento
###iOS
- Modalità risparmio energetico: riduce l'attività
- Aggiornamento app in background: rispetta le preferenze
- BGTaskScheduler: per attività efficienti
Modalità oscura
Schermi OLED
I pixel neri sono disattivati. La modalità oscura salva.
Supporto nativo
Implementare le seguenti linee guida. Il sistema si adatta.
Errori comuni
GPS sempre attivo
Dimenticare di interrompere gli aggiornamenti sulla posizione.
Temporizzatore aggressivo
setInterval di 1 secondo non necessario.
Wake Lock trapelato
Non rilasciato in eccezioni o casi limite.
Debug in produzione
Log eccessivi, funzionalità di debug attivate.
Conclusione
L'ottimizzazione della batteria è responsabilità dello sviluppatore. Monitora i consumi, minimizza il background, utilizza API efficienti e testa in condizioni reali. Gli utenti ringraziano e restano.
##Domande frequenti
1) Come faccio a sapere se la mia app consuma molta batteria? Utilizzare strumenti di profilazione. Confronta con app simili.
2) Lo sfondo è il problema più grande? Spesso sì. L'attività a schermo spento è molto costosa.
3) Il GPS quanto consuma? È uno dei maggiori consumatori. Utilizzare la precisione minima richiesta.
4) La modalità Buio fa davvero risparmiare batteria? Sugli schermi OLED sì, in modo significativo. schermo LCD, no.
5) Come testare il consumo della batteria? Utilizza profiler, testa su dispositivi reali, simula un uso prolungato.
Leggi anche
- Ottimizzazione delle prestazioni mobili: guida completa
- Ottimizzazione delle prestazioni mobili - Esempi reali per principianti
- Consumo della batteria nelle app: confronto con casi reali
- Consumo della batteria nelle app: confronto ed elenco di controllo
- Consumo della batteria nelle app: confronto e guida rapida
- Sviluppo nativo per Android: come eseguire i passaggi essenziali
