Für Stromsparmodus und App-Standby optimieren

Android bietet zwei Energiesparfunktionen, die die Akkulaufzeit verlängern, indem sie festlegen, wie Apps sich verhalten, wenn das Gerät nicht an eine Stromquelle angeschlossen ist: der Ruhemodus und der App-Standby. Doze reduziert den Akkuverbrauch, indem die CPU- und Netzwerkaktivität im Hintergrund für Apps verschoben wird, wenn das Gerät längere Zeit nicht verwendet wird. App Standby verzögert Hintergrund-Netzwerkaktivitäten für Apps ohne aktuelle Nutzeraktivität.

Während sich das Gerät im Stromsparmodus befindet, wird der Zugriff von Apps auf bestimmte akkuintensive Ressourcen bis zum Wartungsfenster ausgesetzt. Die spezifischen Einschränkungen sind unter Einschränkungen für die Energieverwaltung aufgeführt.

Doze und App Standby steuern das Verhalten aller Apps, die auf Android 6.0 oder höher ausgeführt werden, unabhängig davon, ob sie speziell auf API-Level 23 ausgerichtet sind. Testen Sie Ihre App im Stromspar- und App-Standby-Modus und nehmen Sie alle erforderlichen Anpassungen am Code vor, um die bestmögliche Nutzerfreundlichkeit zu gewährleisten. Weitere Informationen finden Sie in den folgenden Abschnitten.

Informationen zum Stromsparmodus

Wenn ein Nutzer ein Gerät bei ausgeschaltetem Bildschirm getrennt und inaktiv lässt, wechselt das Gerät in den Stromsparmodus. Im Ruhemodus versucht das System, den Akku zu schonen, indem der Zugriff von Apps auf netzwerk- und CPU-intensive Dienste eingeschränkt wird. Außerdem wird der Zugriff von Apps auf das Netzwerk verhindert und ihre Jobs, Synchronisierungen und Standard-Wecker werden verschoben.

Das System beendet den Stromsparmodus in regelmäßigen Abständen für kurze Zeit, damit die Apps ihre zurückgestellten Aktivitäten ausführen können. Während dieses Wartungsfensters führt das System alle ausstehenden Synchronisierungen, Jobs und Alarme aus und lässt Apps auf das Netzwerk zugreifen.

Abbildung 1. Der Stromsparmodus bietet ein wiederkehrendes Wartungsfenster, in dem Anwendungen das Netzwerk verwenden und ausstehende Aktivitäten verarbeiten können.

Nach Ablauf des Wartungsfensters wechselt das System wieder in den Stromsparmodus, sperrt den Netzwerkzugriff und verschiebt Jobs, Synchronisierungen und Alarme. Im Laufe der Zeit plant das System Wartungsfenster seltener, was den Akkuverbrauch bei längerer Inaktivität reduziert, wenn das Gerät nicht geladen wird.

Wenn der Nutzer das Gerät durch Verschieben, Einschalten des Bildschirms oder Anschließen eines Ladegeräts aktiviert, beendet das System den Stromsparmodus und alle Apps nehmen wieder den normalen Betrieb auf.

Einschränkungen für den Ruhemodus

Im Stromsparmodus wendet das System die folgenden Einschränkungen auf Ihre Apps an:

Stromspar-Checkliste

App an Stromsparmodus anpassen

Der Stromsparmodus kann sich je nach den angebotenen Funktionen und den verwendeten Diensten unterschiedlich auf Anwendungen auswirken. Viele Apps funktionieren während des Stromsparzyklus normal und ohne Änderung. In einigen Fällen müssen Sie die Verwaltung von Netzwerk, Weckern, Jobs und Synchronisierungen in Ihrer App optimieren. Anwendungen müssen Aktivitäten während jedes Wartungsfensters effizient verwalten können.

Du kannst die beiden AlarmManager-Methoden setAndAllowWhileIdle() und setExactAndAllowWhileIdle() verwenden, um Wecker zu planen. Mit diesen Methoden können Sie Wecker stellen, die auch dann ausgelöst werden, wenn das Gerät im Ruhemodus ist.

Die Einschränkung des Netzwerkzugriffs durch den Ruhemodus wirkt sich wahrscheinlich auch auf Ihre App aus, insbesondere wenn die App auf Echtzeitnachrichten wie Tickle-Nachrichten oder Benachrichtigungen angewiesen ist. Wenn Ihre App für den Empfang von Nachrichten eine dauerhafte Verbindung zum Netzwerk benötigt, verwenden Sie nach Möglichkeit Firebase Cloud Messaging (FCM).

Wenn Sie prüfen möchten, ob sich Ihre Anwendung im Stromsparmodus wie erwartet verhält, können Sie adb-Befehle verwenden, um das System dazu zu zwingen, den Stromsparmodus zu aktivieren und zu beenden und das Verhalten Ihrer Anwendung zu beobachten. Weitere Informationen finden Sie unter Mit Doze und App-Standby testen.

App-Standby

Mit App Standby kann das System erkennen, dass eine App inaktiv ist, wenn der Nutzer sie nicht aktiv verwendet. Das System ermittelt dies, wenn der Nutzer die App über einen bestimmten Zeitraum nicht berührt und keine der folgenden Bedingungen zutrifft:

  • Der Nutzer startet die App explizit.
  • Für die App wird derzeit ein Prozess im Vordergrund ausgeführt, entweder als Aktivität oder Dienst im Vordergrund oder von einer anderen Aktivität oder einem anderen Dienst im Vordergrund verwendet.
  • Die App generiert eine Benachrichtigung, die Nutzer auf dem Sperrbildschirm oder in der Benachrichtigungsleiste sehen.

Wenn der Nutzer das Gerät an ein Netzteil anschließt, werden Apps vom Standbymodus befreit, sodass sie ungehindert auf das Netzwerk zugreifen und alle ausstehenden Jobs und Synchronisierungen ausführen können. Wenn das Gerät längere Zeit nicht verwendet wird, erlaubt das System inaktive Apps etwa einmal täglich den Netzwerkzugriff.

FCM verwenden, um mit deiner App zu interagieren, wenn das Gerät inaktiv ist

Firebase Cloud Messaging (FCM) ist ein Cloud-an-Gerät-Dienst, mit dem Sie Downstream-Messaging in Echtzeit zwischen Back-End-Diensten und Apps auf Android-Geräten unterstützen können. FCM stellt eine einzelne, dauerhafte Verbindung zur Cloud bereit. Alle Apps, die Echtzeitnachrichten benötigen, können diese Verbindung teilen. Diese gemeinsame Verbindung optimiert den Akkuverbrauch erheblich, da mehrere Apps nicht mehr ihre eigenen separaten, dauerhaften Verbindungen aufrechterhalten müssen, was den Akku schnell entladen kann. Wenn für Ihre App die Nachrichtenintegration mit einem Back-End-Dienst erforderlich ist, empfehlen wir Ihnen daher dringend, nach Möglichkeit FCM zu verwenden, anstatt eine eigene persistente Netzwerkverbindung aufrechtzuerhalten.

FCM ist für den Stromspar- und App-Standby-Modus optimiert. Mit FCM-Nachrichten mit hoher Priorität können Sie den Ruhemodus Ihrer App beenden, um das Interesse des Nutzers zu wecken. Im Stromsparmodus oder App-Stand-by-Modus sendet das System die Nachricht und gewährt der App vorübergehenden Zugriff auf Netzwerkdienste und Teil-Wakelocks. Anschließend wird das Gerät oder die App in den Inaktivitätszustand zurückversetzt. Für zeitkritische, für Nutzer sichtbare Benachrichtigungen sollten Sie Nachrichten mit hoher Priorität verwenden, um die Zustellung im Ruhemodus zu ermöglichen. Nachrichten mit hoher Priorität können zu Benachrichtigungen führen. Weitere Informationen finden Sie in der FCM-Anleitung zu Nachrichten mit hoher Priorität.

Verwenden Sie FCM-Nachrichten mit normaler Priorität für Nachrichten, die nicht zu Benachrichtigungen führen, z. B. wenn App-Inhalte im Hintergrund auf dem neuesten Stand gehalten oder Datensynchronisierungen initiiert werden. Nachrichten mit normaler Priorität werden sofort zugestellt, wenn sich das Gerät nicht im Stromsparmodus befindet. Wenn sich das Gerät im Ruhemodus befindet, werden sie während der regelmäßigen Ruhemodus-Wartungsfenster oder sobald der Nutzer das Gerät aufweckt, gesendet.

Wenn Ihre App Downstream-Messaging erfordert, sollten Sie generell FCM verwenden. Wenn Ihre App bereits FCM verwendet, achten Sie darauf, dass Nachrichten mit hoher Priorität nur für Nachrichten verwendet werden, die zu Nutzerbenachrichtigungen führen.

Unterstützung für andere Anwendungsfälle

Fast alle Apps können Doze unterstützen, indem sie die Netzwerkverbindung, Wecker, Jobs und Synchronisierungen verwalten und FCM-Nachrichten verwenden. Für eine begrenzte Anzahl von Anwendungsfällen reicht dies möglicherweise nicht aus. In solchen Fällen stellt das System eine konfigurierbare Liste von Anwendungen bereit, die teilweise von den Optimierungen des Stromsparmodus und App-Standby ausgenommen sind.

Eine teilweise ausgenommene App kann das Netzwerk nutzen und während des Ruhemodus und des App-Standbys teilweise Aufwecksperren halten. Für die App gelten jedoch wie für andere Apps auch andere Einschränkungen. Beispielsweise werden die Jobs und Synchronisierungen der Anwendung auf API-Level 23 und niedriger verzögert und die regulären AlarmManager-Alarme werden nicht ausgelöst. Eine App kann prüfen, ob sie sich derzeit auf der Befreiungsliste befindet, indem sie isIgnoringBatteryOptimizations() aufruft.

Nutzer können die Liste der ausgenommenen Apps unter Einstellungen > Akku > Akkuoptimierung manuell konfigurieren. Alternativ bietet das System die Möglichkeit, Nutzer von Apps um eine Ausnahme zu bitten:

Eine App kann prüfen, ob sie derzeit auf der Ausnahmeliste steht, indem sie isIgnoringBatteryOptimizations() aufruft.

Mit Doze und App-Standby testen

Teste deine App vollständig im Stromsparmodus und App-Standby, um die Nutzerfreundlichkeit zu verbessern.

Apps mit Stromsparmodus testen

So testen Sie den Stromsparmodus:

  1. Konfigurieren Sie ein Hardwaregerät oder ein virtuelles Gerät mit einem System-Image von Android 6.0 (API-Level 23) oder höher.
  2. Verbinden Sie das Gerät mit dem Entwicklungscomputer und installieren Sie die App.
  3. Führen Sie die App aus und lassen Sie sie aktiv.
  4. Führen Sie den folgenden Befehl aus, um das System in den Ruhemodus zu versetzen:
        $ adb shell dumpsys deviceidle force-idle
        
  5. Wenn Sie bereit sind, beenden Sie den Ruhemodus mit dem folgenden Befehl:
        $ adb shell dumpsys deviceidle unforce
        
  6. Aktivieren Sie das Gerät mit dem folgenden Befehl wieder:
        $ adb shell dumpsys battery reset
        
  7. Beobachten Sie das Verhalten Ihrer App, nachdem Sie das Gerät reaktiviert haben. Sorgen Sie dafür, dass die App ordnungsgemäß wiederhergestellt wird, wenn das Gerät den Ruhemodus beendet.

App mit App-Standby testen

So testen Sie den App-Standbymodus mit Ihrer App:

  1. Konfigurieren Sie ein Hardwaregerät oder ein virtuelles Gerät mit einem System-Image von Android 6.0 (API-Level 23) oder höher.
  2. Verbinden Sie das Gerät mit dem Entwicklungscomputer und installieren Sie die App.
  3. Führen Sie die App aus und lassen Sie sie aktiv.
  4. Führen Sie die folgenden Befehle aus, um die App in den App-Standbymodus zu versetzen:
        $ adb shell dumpsys battery unplug
        $ adb shell am set-inactive <packageName> true
        
  5. Simulieren Sie den Ruhemodus der App mit den folgenden Befehlen:
        $ adb shell am set-inactive <packageName> false
        $ adb shell am get-inactive <packageName>
        
  6. Beobachten Sie das Verhalten Ihrer App nach dem Aktivieren. Achten Sie darauf, dass die App ordnungsgemäß aus dem Stand-by-Modus wiederhergestellt wird. Prüfen Sie insbesondere, ob die Benachrichtigungen und Hintergrundjobs Ihrer App wie erwartet funktionieren.

Zulässige Anwendungsfälle für eine Ausnahme

In der folgenden Tabelle werden mehrere Anwendungsfälle aufgeführt und angegeben, ob es in diesen Situationen zulässig ist, dass Apps die ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS-Intention-Aktion verwenden. Im Allgemeinen erfüllt Ihre App diese Ausnahmen nicht, es sei denn, der Ruhemodus oder der App-Standbymodus beeinträchtigt die Hauptfunktion der App oder es gibt einen technischen Grund, warum Ihre App keine FCM-Nachrichten mit hoher Priorität verwenden kann.

Weitere Informationen finden Sie unter Unterstützung für andere Anwendungsfälle.

Eingeben Anwendungsfall Kann FCM verwendet werden? Ausnahme zulässig? Hinweise
Instant Messaging-, Chat- oder Anruf-App. Erfordert die Übermittlung von Echtzeitnachrichten an Nutzer, während sich das Gerät im Stromsparmodus oder die App im App-Standby befindet. Ja, mit FCM Nicht zulässig Verwenden Sie FCM-Nachrichten mit hoher Priorität, um die App zu aktivieren und auf das Netzwerk zuzugreifen.
Ja, aber es werden keine FCM-Nachrichten mit hoher Priorität verwendet.
Instant-Messaging-, Chat- oder Anruf-Apps sowie Unternehmens-VoIP-Apps Nein, FCM kann nicht verwendet werden, da die technische Abhängigkeit von einem anderen Messaging-Dienst oder der Stromsparmodus und App-Standby die Kernfunktion der App beeinträchtigen. Akzeptabel
App „Persönliche Sicherheit“. Apps, die Nutzer und Familien schützen falls zutreffend. Akzeptabel
App zur Aufgabenautomatisierung. Die Hauptfunktion der App besteht darin, automatisierte Aktionen zu planen, z. B. für Instant Messaging, Sprachanrufe oder die neue Fotoverwaltung. falls zutreffend. Akzeptabel
Companion App für ein Peripheriegerät. Die Hauptfunktion der App besteht darin, eine dauerhafte Verbindung mit dem Peripheriegerät aufrechtzuerhalten, um dem Peripheriegerät Internetzugang zu bieten. falls zutreffend. Akzeptabel
Die App muss sich nur gelegentlich mit einem Peripheriegerät verbinden, um zu synchronisieren, oder nur mit Geräten wie kabellosen Kopfhörern, die über Standard-Bluetooth-Profile verbunden sind. falls zutreffend. Nicht zulässig