Per migliorare la durata della batteria del dispositivo, Android può influire sullo stato del dispositivo monitorandone l'utilizzo e lo stato di riattivazione. La piattaforma può entrare in uno stato di sospensione per mettere in pausa l'esecuzione delle attività quando il dispositivo non è in uso.
Informazioni sulla modalità Sospensione
La modalità Sospensione prolunga la durata della batteria rimandando l'attività della CPU e della rete in background delle app quando un dispositivo non viene utilizzato per lunghi periodi.
I dispositivi inutilizzati in Sospensione entrano periodicamente in un periodo di manutenzione, durante il quale le app possono completare le attività in attesa (sincronizzazioni, job e così via). Sospensione riprende quindi la modalità di sospensione per un periodo di tempo più lungo, seguito da un'altra finestra di manutenzione. La piattaforma continua la sequenza di sospensione/manutenzione Sospensione, aumentando ogni volta la durata dello stato inattivo fino a raggiungere un massimo di alcune ore di sospensione. In qualsiasi momento, un dispositivo in modalità Sospensione rimane consapevole del movimento e esce immediatamente dalla modalità se viene rilevato un movimento.
Android 7.0 e versioni successive estendono la modalità Sospensione per attivare un insieme più leggero di ottimizzazioni ogni volta che un utente disattiva lo schermo del dispositivo, anche quando continua a muoversi, consentendo una maggiore durata della batteria.
I servizi di sistema critici vengono generalmente configurati dai produttori di dispositivi in modo da essere esenti da Sospensione. Gli utenti possono anche escludere app specifiche da Sospensione utilizzando il menu Impostazioni. Tuttavia, l'esenzione delle app potrebbe causare un consumo eccessivo della batteria del dispositivo. Per impostazione predefinita, Doze è disattivato in AOSP. Per dettagli sull'attivazione di Doze, consulta Integrazione di Doze.
Requisiti della modalità Sospensione
Il supporto di Sospensione richiede che il dispositivo disponga di un servizio di messaggistica cloud, come Firebase Cloud Messaging (FCM). Gli eventi di trigger esterni, come i messaggi cloud, possono riattivare temporaneamente le app per eseguire operazioni mentre il dispositivo rimane in modalità Sospensione.
Il supporto completo di Sospensione richiede anche un rilevamento di movimenti significativo (RDM) sul dispositivo. Tuttavia, la modalità Sospensione leggera in Android 7.0 e versioni successive non richiede un RDM. Se la modalità Sospensione è attivata su un dispositivo:
- Ha un SMD, vengono eseguite ottimizzazioni complete di Sospensione (incluse ottimizzazioni leggere).
- Non ha un SMD, vengono applicate solo le ottimizzazioni di Sospensione leggera.
Ciclo di vita della modalità Sospensione
La modalità Sospensione inizia quando la piattaforma rileva che il dispositivo è inattivo e termina quando si verificano una o più attività dei criteri di uscita.
La piattaforma rileva che un dispositivo è inattivo quando:
- Il dispositivo è fermo (utilizzando SMD).
- Lo schermo del dispositivo è spento per un determinato periodo di tempo.
La modalità Sospensione non si attiva quando un dispositivo alimentato a batteria è collegato a un caricabatterie.
Durante la sospensione
La piattaforma tenta di mantenere il sistema in uno stato di sospensione, riprendendo periodicamente le normali operazioni durante un periodo di manutenzione e poi facendo tornare il dispositivo in modalità di sospensione per periodi ripetuti più lunghi. Durante il sonno, sono attive le seguenti limitazioni:
- Alle app non è consentito l'accesso alla rete.
- Blocchi app ignorati.
- Le sveglie vengono differite. Sono escluse le sveglie e le sveglie impostate utilizzando
setAndAllowWhileIdle()
(limite di 1 ogni 15 minuti per app in modalità Silenzio). Questa esenzione è destinata alle app (come Calendar) che devono mostrare notifiche di promemoria di eventi. - Le ricerche di reti Wi-Fi non vengono eseguite.
- Le sincronizzazioni
SyncAdapter
e i jobJobScheduler
sono stati differiti fino al successivo periodo di manutenzione. - Le app che ricevono messaggi SMS e MMS vengono inserite in una whitelist temporanea in modo che possano completare l'elaborazione.
Esci
La piattaforma esce dalla modalità Sospensione del dispositivo quando rileva:
- Interazione dell'utente con il dispositivo
- Movimento del dispositivo
- Lo schermo del dispositivo si accende
- Sveglia sveglia imminente
Le notifiche non fanno uscire il dispositivo dalla modalità Sospensione.
Android 7.0 e versioni successive estendono Sospensione attivando una modalità di sospensione leggera durante lo spegnimento dello schermo, prima che il dispositivo sia inattivo.
Figura 1. Modalità Sospensione per dispositivi fissi e non fissi.
Azione | Sospensione | Sospensione leggera |
---|---|---|
Attivazione | Schermo spento, con batteria, a riposo | Schermo spento, a batteria (scollegato) |
Tempi | Periodi con manutenzione in aumento | Periodi ripetuti di N minuti con finestre di manutenzione |
Restrizioni | Nessun accesso alla rete, blocco riattivazione o ricerca GPS/Wi-Fi; sveglie e attività/sincronizzazioni posticipate | Nessun accesso alla rete; attività/sincronizzazioni differite tranne durante i periodi di manutenzione |
Comportamento | Solo messaggi di notifiche push con priorità elevata ricevuti | Tutti i messaggi in tempo reale (messaggi istantanei, chiamate e così via) ricevuti; il messaggio di notifica push ad alta priorità consente l'accesso temporaneo alla rete |
Esci | Movimento, schermo acceso o sveglia | Schermo acceso |
Interazione con la modalità Standby delle app
- Il tempo trascorso in Sospensione non viene conteggiato ai fini della modalità App in attesa.
- Quando il dispositivo è in modalità Sospensione, le app inattive sono autorizzate a eseguire operazioni normali almeno una volta al giorno.
Integrare la modalità Sospensione
Quando la modalità Sospensione è attiva, i dispositivi che supportano
SENSOR_TYPE_SIGNIFICANT_MOTION
eseguono ottimizzazioni complete della modalità Sospensione (incluse le ottimizzazioni leggere);
i dispositivi senza un SMD eseguono solo ottimizzazioni leggere della modalità Sospensione. Android selezionerà automaticamente le ottimizzazioni di Doze appropriate e la configurazione del fornitore non è necessaria.
Per attivare la modalità Sospensione per un dispositivo:
- Verifica che sul dispositivo sia installato un servizio di messaggistica cloud.
- Nel file di configurazione dell'overlay del dispositivo
overlay/frameworks/base/core/res/res/values/config.xml
, impostaconfig_enableAutoPowerModes
sutrue
: In AOSP, questo parametro è impostato su<bool name="config_enableAutoPowerModes">true</bool>
false
(Sospensione disattivata) per impostazione predefinita.
- Verifica che le app e i servizi preinstallati:
- Segui le linee guida per l'ottimizzazione del risparmio energetico. Per maggiori dettagli, vedi Test e ottimizzazione delle app.
OPPURE
- Sono esenti da Sospensione e Standby delle app. Per maggiori dettagli, consulta Esonerare le app.
- Segui le linee guida per l'ottimizzazione del risparmio energetico. Per maggiori dettagli, vedi Test e ottimizzazione delle app.
- Verifica che i servizi necessari siano esenti da Sospensione.
Suggerimenti
- Se possibile, utilizza FCM per la messaggistica in downstream.
- Se gli utenti devono vedere subito una notifica, utilizza un messaggio FCM con priorità elevata.
- Fornisci informazioni sufficienti all'interno del payload del messaggio iniziale (per evitare accessi successivi alla rete non necessari).
- Imposta le sveglie importanti con
setAndAllowWhileIdle()
esetExactAndAllowWhileIdle()
.
Testare e ottimizzare le app
Testa tutte le app (in particolare quelle precaricate) in modalità Sospensione. Per maggiori dettagli, consulta Eseguire test con Doze e App Standby.