Android
Doze-Modus
Suche…
Bemerkungen
Der Doze-Modus ist ein Satz von Änderungen und Regeln, die das Telefon in den Ruhezustand versetzen, wenn es nicht verwendet wird.
Unter Android 6.0 Marshmallow: Der Doze-Modus wird aktiviert, nachdem der Bildschirm ausgeschaltet ist, das Gerät steht und der Akku leer ist. Wie Sie im obigen Diagramm sehen können, erhält das Gerät bei Aktivierung des Doze-Modus keine Wakelocks, Netzwerkzugriff, Jobs / Synchronisierungen, Alarme, GPS- / WLAN-Scans.
Unter Android 7.0 Nougat: Stellen Sie sich vor, wenn sich Ihr Telefon in Ihrer Tasche befindet (der Bildschirm ist ausgeschaltet, der Akku läuft, aber es ist nicht stationär), möchten Sie vielleicht auch die Doze-Modus-Funktionen nutzen, oder? Deshalb hat Google den Extended Doze-Modus angekündigt: Er läuft, wenn der Bildschirm ausgeschaltet ist, aber nicht stationär. Wie Sie in diesem Diagramm sehen können, sind nur Netzwerkzugriff und Jobs / Synchronisierungen deaktiviert. Beachten Sie, dass die erweiterte Doze den ersten Doze-Modus nicht ersetzt. Sie arbeiten zusammen, abhängig vom Telefonstatus (stationär oder nicht). Hier sind die Unterschiede: Entwickler sollten sich bewusst sein, dass:
- Doze behält möglicherweise temporären Wakelock- und Netzwerkzugriff für GCM-Nachrichten (Google Cloud Messaging) mit hoher Priorität bei (wenn der Benutzer eine sofortige Benachrichtigung benötigt).
- Vordergrunddienste (z. B. Musikwiedergabe) funktionieren weiterhin.
Weitere Informationen finden Sie hier: https://developer.android.com/training/monitoring-device-state/doze-standby.html
App vom Doze-Modus ausschließen
- Telefoneinstellungen öffnen
- Batterie öffnen
- Menü öffnen und "Batterieoptimierung" auswählen
- Wählen Sie im Dropdown-Menü "Alle Apps" aus.
- Wählen Sie die App aus, die Sie auf die Positivliste setzen möchten
- wähle "nicht optimieren"
Diese App wird jetzt unter nicht optimierten Apps angezeigt.
Eine App kann durch Aufrufen von isIgnoringBatteryOptimizations()
prüfen, ob sie als Whitelist isIgnoringBatteryOptimizations()
Whitelisting einer Android-Anwendung programmgesteuert
Bei der Whitelisting-Funktion wird der Doze-Modus für Ihre App nicht deaktiviert. Sie können dies jedoch über Netzwerk- und Hold-Wake-Sperren tun.
Das programmgesteuerte Whitelisting einer Android-Anwendung kann wie folgt durchgeführt werden:
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);
}
Das Ergebnis des Startens der obigen Aktivität kann durch den folgenden Code überprüft werden:
@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
}
}
}