Ricerca…


Osservazioni

Doze Mode è un insieme di modifiche e regole che mettono il telefono in stop quando inattivo.

Su Android 6.0 Marshmallow: la modalità Doze viene attivata dopo un po 'di tempo, lo schermo è spento, il dispositivo è fermo e funziona a batteria. Doze Mode su Marshmallow Come puoi vedere nello schema sopra, quando la Modalità Doze viene attivata, il dispositivo non riceve alcun wakelock, accesso alla rete, job / sync, allarmi, scansioni GPS / Wi-fi.

Su Android 7.0 Nougat: immagina se il tuo telefono è in tasca (lo schermo è spento, funziona a batteria, ma non è fermo) potresti voler ottenere anche le funzionalità della modalità Doze, giusto? Ecco perché Google ha annunciato la modalità Doze estesa: viene eseguita quando lo schermo è spento, ma non fermo. Doze Mode su Nougat Come puoi vedere in questo diagramma, solo Accesso alla rete e lavori / sincronizzazioni sono disabilitati. Si noti che il Doze esteso non sostituisce la prima modalità Doze. Lavorano insieme, a seconda dello stato del telefono (fisso o non). Ecco le distinzioni: Distinzione di modalità Doze Gli sviluppatori dovrebbero essere consapevoli che:

  • Doze potrebbe mantenere il wakelock temporaneo e l'accesso alla rete per i messaggi GCM ad alta priorità (Google Cloud Messaging) (per i casi in cui l'utente necessita di una notifica immediata);
  • I servizi in primo piano (come una riproduzione musicale) continueranno a funzionare.

Puoi trovare maggiori informazioni qui: https://developer.android.com/training/monitoring-device-state/doze-standby.html

Escludi app dall'uso della modalità doze

  1. Apri le impostazioni del telefono
  2. apri la batteria
  3. apri il menu e seleziona "ottimizzazione della batteria"
  4. dal menu a discesa seleziona "tutte le app"
  5. seleziona l'app che vuoi autorizzare
  6. seleziona "non ottimizzare"

Ora questa app mostrerà le app non ottimizzate.

isIgnoringBatteryOptimizations() può controllare se è autorizzata chiamando isIgnoringBatteryOptimizations()

Whitelist di un'applicazione Android a livello di programmazione

La whitelist non disabilita la modalità doze per la tua app, ma puoi farlo usando i blocchi di rete e di attesa.

La whitelist di un'applicazione Android programmaticamente può essere eseguita come segue:

boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
if(!isIgnoringBatteryOptimizations){
    Intent intent = new Intent();
    intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setData(Uri.parse("package:" + getPackageName()));
    startActivityForResult(intent, MY_IGNORE_OPTIMIZATION_REQUEST);
}

Il risultato dell'avvio dell'attività sopra può essere verificato dal seguente codice:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == MY_IGNORE_OPTIMIZATION_REQUEST) {
        PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
        boolean isIgnoringBatteryOptimizations = pm.isIgnoringBatteryOptimizations(getPackageName());
        if(isIgnoringBatteryOptimizations){
            // Ignoring battery optimization
        }else{
           // Not ignoring battery optimization
        }
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow