WikiAndroid #4: cosa prosciuga la batteria degli smartphone Android? I WakeLock!

Creato il 04 ottobre 2015 da Vincenzo Camuso

Ci sono tanti fattori che influenzano la durata della batteria in uno smartphone Android, il display, la ricezione e ovviamente le applicazioni e il processore. Proprio le applicazioni e i loro servizi provocano i WakeLock, che non permettono al processore di andare nello stato di Deep Sleep. Scopriamo che significano questi due termini!

Per chi è un semplice utente Android queste due parole sono probabilmente sconosciute, ma il nostro articolo è rivolto a tutti coloro che hanno problemi di autonomia e non riescono a capire da cosa dipenda. 

Se avete seguito WikiAndroid nelle precedenti puntate, vi sarete fatti un'idea di come funziona il Sistema Operativo Android e in cosa consiste un Kernel, piuttosto che la CPU o ancora un'applicazione. Proprio questi fattori sono i responsabili dei WakeLock. 

In pratica il processore di uno smartphone (e di qualsiasi altro dispositivo moderno che possegga una CPU) è dotato di una certa frequenza, detta anche velocità, che, in un certo senso, ci fornisce un dato sulla potenza della CPU e di quanta energia utilizza
Per esempio, un processore che lavora a 2,5 GHz di frequenza è più potente e consuma più energia di uno che lavora ad una frequenza di 1,3 GHz. 

In realtà non è così semplice capire quale processore sia più potente, poiché entrano in gioco architetture, numero di core, processo costruttivo, oltre alla sua velocità.

Ciò che ci interessa capire è che qualsiasi processore può variare tale frequenza e quindi può operare a una frequenza bassissima (nell'ordine del 300 MHz), che gli permette di consumare pochissime risorse quando lo smartphone è in StandBy: in questo caso si dice che il processore va in Deep Sleep (sonno profondo). 

Anche quando il processore va in Deep Sleep, è sempre pronto a ricevere informazioni da elaborare, richieste dall'esterno (come chiamate, messaggi eccetera); queste richieste di risveglio alterano lo stato di Deep Sleep, facendo aumentare la frequenza e quindi il consumo energetico. 

Le richieste di risveglio sono dette appunto WakeLock e, se sono troppe, portano ad un consumo eccessivo della batteria (detto anche battery drain) anche quando il telefono dovrebbe essere in StandBy. 

Esistono due tipi di WakeLock: i kernel WakeLock (provocati dall'hardware) e i partial WakeLock (provocati dalle applicazioni). 

I kernel WakeLock sono quelli che richiedono al processore di accendere il display o di mandare in riproduzione un audio, mentre i partial WakeLock sono tutti i risvegli provocati dalle applicazioni, per esempio quando riceviamo un messaggio WhatsApp
Per quanto riguarda i kernel WakeLock difficilmente riusciamo a intervenire, abbiamo qualche speranza in più per i partial WakeLock. 

WakeLock Detector

BetterBatteryStats


Greenify


Per capire se un particolare WakeLock sta prosciugando la nostra batteria dobbiamo installare applicazioni tipo WakeLock Detector oppure BetterBatteryStats, che richiedono il root; inoltre, ci possono aiutare applicazioni come Greenify e Amplify (richiedono anche Xposed) per limitare questi WakeLock. 

Due dei WakeLock più comuni sono NlpWakeLock e NlpCollectorWakeLock, ovvero il WakeLock provocato dai servizi Google per localizzare il nostro dispositivo. Questi due WakeLock possono essere limitati attraverso Amplify, che però richiede Root e Xposed. Un metodo più semplice e veloce, che vi permetterà di ridurre sensibilmente questi due WakeLock è quello di disattivare la cronologia delle posizioni del vostro account Google.

Purtroppo non sempre esistono delle soluzioni certe per questo tipo di problemi, ma spesso si va a tentativi; l'importante, in questi casi, è "googlare" e capire come hanno risolto altre persone che hanno lo stesso problema, ma non è detto che quella particolare soluzione vada bene per il vostro dispositivo. 

Leggi anche: 

WikiAndroid #2: Sistema Operativo e Kernel, cos'è e come funziona?