Per migliorare la durata della batteria del dispositivo, Android può influire sullo stato del dispositivo monitorando l'utilizzo e lo stato di veglia del dispositivo. La piattaforma può entrare in uno stato di sospensione per sospendere l'esecuzione delle attività mentre il dispositivo non è utilizzato.
Sonnecchiare
Doze prolunga la durata della batteria rinviando la CPU in background dell'app e l'attività di rete quando un dispositivo non viene utilizzato per lunghi periodi.
I dispositivi inattivi in Doze entrano periodicamente in una finestra di manutenzione, durante la quale le app possono completare il lavoro in sospeso (sincronizzazione, lavori, ecc.). Doze riprende quindi il sonno per un periodo di tempo più lungo, seguito da un'altra finestra di manutenzione. La piattaforma continua la sequenza di sonno/mantenimento Doze, aumentando ogni volta la durata dell'inattività, fino al raggiungimento di un massimo di alcune ore di sonno. In ogni momento, un dispositivo in Doze rimane consapevole del movimento e lascia immediatamente Doze se viene rilevato un movimento.
Android 7.0 e versioni successive estendono Doze per attivare una serie più leggera di ottimizzazioni ogni volta che un utente spegne lo schermo del dispositivo, anche quando l'utente continua a muoversi, consentendo una maggiore durata della batteria.
I servizi di sistema critici sono generalmente impostati dai produttori di dispositivi per essere esentati da Doze. Gli utenti possono anche esentare app specifiche da Doze utilizzando il menu Impostazioni. Tuttavia, l'esenzione delle app potrebbe causare il consumo della batteria del dispositivo. Per impostazione predefinita, Doze è disabilitato in AOSP; per i dettagli sull'abilitazione di Doze, vedere Integrazione di Doze .
Dose requisiti
Il supporto di Doze richiede che il dispositivo disponga di un servizio di messaggistica cloud, come Firebase Cloud Messaging (FCM) . Eventi di attivazione esterni, come i messaggi cloud, possono riattivare temporaneamente le app per funzionare mentre il dispositivo rimane in modalità Doze.
Il supporto completo di Doze richiede anche un rilevatore di movimento significativo (SMD) sul dispositivo; tuttavia, la modalità Doze leggera in Android 7.0 e versioni successive non richiede un SMD. Se Doze è abilitato su un dispositivo che:
- Dispone di un SMD, si verificano ottimizzazioni Doze complete (incluse ottimizzazioni leggere).
- Non ha un SMD, si verificano solo le ottimizzazioni Doze leggere.
Dose ciclo di vita
Doze inizia quando la piattaforma rileva che il dispositivo è inattivo e termina quando si verificano una o più attività dei criteri di uscita.
Rilevamento
La piattaforma rileva che un dispositivo è inattivo quando:
- Il dispositivo è fermo (usando SMD).
- Lo schermo del dispositivo è spento per un certo periodo di tempo.
La modalità Doze non si attiva quando un dispositivo alimentato a batteria è collegato a un caricabatterie.
Durante Doze
La piattaforma tenta di mantenere il sistema in uno stato di sospensione, riprendendo periodicamente le normali operazioni durante una finestra di manutenzione, quindi riportando il dispositivo in modalità di sospensione per periodi ripetuti più lunghi. Durante il sonno sono attive le seguenti restrizioni:
- Alle app non è consentito l'accesso alla rete.
- Wakelock delle app ignorati.
- Gli allarmi sono differiti. Esclude le sveglie e le sveglie impostate utilizzando
setAndAllowWhileIdle()
(limitato a 1 ogni 15 minuti per app in Doze). Questa esenzione è concepita per le app (come Calendar) che devono mostrare le notifiche di promemoria degli eventi. - Le scansioni Wi-Fi non vengono eseguite.
- Le sincronizzazioni
SyncAdapter
e i lavoriJobScheduler
posticipati fino alla successiva finestra di manutenzione. - Le app che ricevono SMS e MMS vengono inserite in una whitelist temporanea in modo che possano completare la loro elaborazione.
Uscita
La piattaforma esce dal dispositivo da Doze quando rileva:
- Interazione dell'utente con il dispositivo
- Movimento del dispositivo
- Lo schermo del dispositivo si accende
- Allarme Sveglia imminente
Le notifiche non fanno uscire il dispositivo da Doze.
Android 7.0 e versioni successive estende Doze abilitando una modalità di sospensione leggera quando lo schermo è spento, prima che il dispositivo sia inattivo.
Azione | Sonnecchiare | Doze leggero |
---|---|---|
Grilletto | Schermo spento, a batteria, fermo | Schermo spento, a batteria (scollegato) |
Tempi | Periodi successivi aumentando con la manutenzione | Periodi ripetuti di N minuti con finestre di manutenzione |
Restrizioni | Nessun accesso alla rete, wakelock o scansione GPS/Wi-Fi; allarmi e lavori/sincronizzazioni differiti | Nessun accesso alla rete; lavori/sincronizzazioni posticipate tranne durante le finestre di manutenzione |
Comportamento | Ricevuti solo messaggi di notifica push con priorità alta | Tutti i messaggi in tempo reale (messaggi istantanei, chiamate, ecc.) ricevuti; il messaggio di notifica push ad alta priorità consente l'accesso temporaneo alla rete |
Uscita | Movimento, schermo acceso o sveglia | Schermo acceso |
Interazione con App Standby
- Il tempo trascorso in Doze non conta per l'App Standby.
- Mentre il dispositivo è in modalità Doze, le app inattive possono eseguire operazioni normali almeno una volta al giorno.
Integrare Doze
Quando Doze è abilitato, i dispositivi che supportano SENSOR_TYPE_SIGNIFICANT_MOTION
eseguono ottimizzazioni Doze complete (incluse ottimizzazioni leggere); i dispositivi senza SMD eseguono solo ottimizzazioni Doze leggere. Android seleziona automaticamente le ottimizzazioni Doze appropriate e la configurazione del fornitore non è necessaria.
Per abilitare Doze per un dispositivo:
- Verifica che sul dispositivo sia installato un servizio di messaggistica cloud.
- Nel file di configurazione overlay dispositivo overlay
overlay/frameworks/base/core/res/res/values/config.xml
, impostaconfig_enableAutoPowerModes
sutrue
:<bool name="config_enableAutoPowerModes">true</bool>
In AOSP, questo parametro è impostato sufalse
(Doze disabilitato) per impostazione predefinita. - Conferma che le app e i servizi precaricati:
- Utilizzare le linee guida per l'ottimizzazione del risparmio energetico . Per i dettagli, consulta Test e ottimizzazione delle app .
O
- Sono esenti da Doze e App Standby. Per i dettagli, vedere Applicazioni esenti .
- Utilizzare le linee guida per l'ottimizzazione del risparmio energetico . Per i dettagli, consulta Test e ottimizzazione delle app .
- Conferma che i servizi necessari sono esentati da Doze.
Consigli
- Se possibile, utilizzare FCM per la messaggistica a valle .
- Se i tuoi utenti devono vedere subito una notifica, utilizza un messaggio ad alta priorità di FCM .
- Fornire informazioni sufficienti all'interno del payload del messaggio iniziale (per evitare accessi alla rete successivi non necessari).
- Imposta allarmi critici con
setAndAllowWhileIdle()
esetExactAndAllowWhileIdle()
.
Test e ottimizzazione delle app
Testa tutte le app (in particolare le app precaricate) in modalità Doze. Per i dettagli, fare riferimento a Test con Doze e App Standby .