Come Android M riduce il battery drain, con Doze e App standby

Nicola Ligas
Nicola Ligas Tech Master
Come Android M riduce il battery drain, con Doze e App standby

Una delle "promesse" di Android M, almeno stando alle indiscrezioni pre-lancio, era relativa ad una migliore ottimizzazione del risparmio energetico, e qualcosa sembra in effetti che sia arrivato. Avrete infatti sentito parlare di Doze, ma questa non è la sola novità introdotta dalla preview di Android M, che si comporta in maniera diversa anche con le app in standby. Vediamo quindi come funzionano e cosa sono queste due nuove opzioni di risparmio energetico.

LEGGI ANCHE: Il battery drain su Android

Come funziona Doze

Se un dispositivo è scollegato dall'alimentazione e lasciato fermo con lo schermo spento per un certo periodo di tempo, questo va in modalità Doze che cerca di tenere il sistema in uno stato di sleep. In questa modalità, il dispositivo riprende periodicamente le normali operazioni per un breve periodo di tempo, in modo da sincronizzare le app e così che il sistema possa concludere operazioni rimaste in sospeso.

Le seguenti restrizioni sono applicate alle app in modalità Doze:

  • L'accesso di rete è disabilitato, a meno che l'app non riceva una sollecitazione ad alta priorità da Google Cloud Messaging (possibili in una prossima versione di GCM).
  • Wake lock sono ignorati.
  • Avvisi impostati con la classe AlarmManager sono disabilitati, eccetto quelli impostati con i metodi setAlarmClock() e AlarmManager.setAndAllowWhileIdle().
  • Scansioni di reti Wi-Fi non sono eseguite.
  • A Syncs e jobs per i sync adapters e JobScheduler non è permessa l'esecuzione. Quando il dispositivo esce dalla modalità Doze, questo esegue qualsiasi job o sync che sia rimasto in sospeso.

Se ci pensate bene, è un po' quello che faceva da anni il vecchio Juice Defender (o chi per lui), sebbene in modo diverso, in questo caso più radicato nel sistema, ma anche con un po' meno controllo da parte dell'utente.

Come funziona App standby

Nella preview di Android M un'app è considerata in idle dopo un certo periodo di tempo, a meno che il sistema non rilevi uno o più dei seguenti segnali:

  • L'app viene lanciata dall'utente.
  • L'app ha un processo in primo piano (sia che sia una activity che un servizio, o in uno da un'altra activity o servizio in foreground).
  • L'app genera una notifica che l'utente può vedere nel lock screen o nella barra delle notifiche.
  • L'utente chiede espressamente che l'app sia esente da ottimizzazioni, tramite le impostazioni del sistema.

Se il dispositivo è scollegato dall'alimentazione, le app in idle avranno accesso di rete disabilitato e sync e job sospesi. Quando il dispositivo è in ricarica, alle app viene riconcesso l'accesso alla rete e vengono portate a termine tutte le operazioni in sospeso. Se il dispositivo è in idle per lunghi periodi di tempo, alle app viene comunque concesso accesso alla rete circa una volta al giorno.

App standby assomiglia invece a Greenify, almeno in parte, anche se in questo caso il controllo dell'utente è praticamente zero. Notate inoltre che, per andare in modalità Doze, il dispositivo deve proprio essere lasciato fermo ("left stationary"), il che è anche logico dato che si tratta di una modalità piuttosto aggressiva, simile a quella aereo. Per App standby non ci sono invece requisiti così stringenti, e questa modalità diventa un po' un incentivo a limitare le notifiche di tutte quelle app che non ci interessano, così che vadano più facilmente in idle.

In ogni caso, qualsiasi cosa migliori l'autonomia senza ledere l'esperienza utente, è senz'altro cosa gradita. Quest'ultimo punto resta ancora un minimo da verificare, ma siamo fiduciosi che Google abbia fatto le cose per bene.