Für Stromsparmodus und App-Standby optimieren

Android hat zwei Energiesparfunktionen, die die Akkulaufzeit für Nutzer verlängern. Sie legen fest, wie sich Apps verhalten, wenn ein Gerät nicht an eine Stromquelle angeschlossen ist: Stromsparmodus und App-Stand-by. Der Stromsparmodus reduziert den Akkuverbrauch, indem die Hintergrund-CPU- und Netzwerkaktivität für Apps aufgeschoben wird, wenn das Gerät längere Zeit nicht verwendet wird. Mit App-Standby wird die Netzwerkaktivität im Hintergrund für Apps ohne kürzliche Nutzeraktivität aufgeschoben.

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

Der Stromsparmodus und App-Stand-by verwalten das Verhalten aller Apps, die unter 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 für einen bestimmten Zeitraum nicht angeschlossen und nicht bewegt und der Bildschirm ausgeschaltet ist, wechselt das Gerät in den Stromsparmodus. Im Stromsparmodus versucht das System, den Akku zu schonen, indem der Zugriff von Apps auf Netzwerk- und CPU-intensive Dienste eingeschränkt wird. Außerdem wird verhindert, dass Anwendungen auf das Netzwerk zugreifen, und ihre Jobs, Synchronisierungen und Standardalarme werden zurückgestellt.

In regelmäßigen Abständen wird der Stromsparmodus für kurze Zeit beendet, damit die Apps ihre ausgesetzten Aktivitäten abschließen können. Während dieses Wartungsfensters führt das System alle ausstehenden Synchronisierungen, Jobs und Alarme aus und ermöglicht Apps den Zugriff auf das Netzwerk.

Abbildung 1: Der Stromsparmodus bietet ein wiederkehrendes Wartungsfenster für Apps, damit diese das Netzwerk nutzen und ausstehende Aktivitäten verarbeiten können.

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

Wenn der Nutzer das Gerät durch Bewegen des Geräts, Einschalten des Bildschirms oder Anschließen eines Ladegeräts aufweckt, wird der Stromsparmodus beendet und alle Apps werden wieder normal genutzt.

Einschränkungen des Stromsparmodus

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

Stromspar-Checkliste

App an den Stromsparmodus anpassen

Der Stromsparmodus kann sich je nach den angebotenen Funktionen und den verwendeten Diensten unterschiedlich auf Anwendungen auswirken. Viele Apps funktionieren im Stromsparmodus ohne Änderung normal. In einigen Fällen müssen Sie die Verwaltung von Netzwerken, Alarmen, Jobs und Synchronisierungen durch Ihre Anwendung optimieren. Anwendungen müssen in der Lage sein, Aktivitäten während jedes Wartungsfensters effizient zu verwalten.

Zur einfacheren Planung von Weckern können Sie zwei AlarmManager-Methoden verwenden: setAndAllowWhileIdle() und setExactAndAllowWhileIdle(). Mit diesen Methoden können Sie Alarme einstellen, die ausgelöst werden, selbst wenn sich das Gerät im Stromsparmodus befindet.

Die Einschränkung des Stromsparmodus für den Netzwerkzugriff wirkt sich wahrscheinlich auch auf Ihre App aus, insbesondere wenn sie auf Echtzeitnachrichten wie Kitzeln oder Benachrichtigungen angewiesen ist. Wenn Ihre Anwendung zum Empfangen von Nachrichten eine dauerhafte Verbindung zum Netzwerk benötigt, verwenden Sie nach Möglichkeit Firebase Cloud Messaging (FCM).

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

Informationen zum App-Stand-by

Mit App-Stand-by kann das System feststellen, dass eine Anwendung inaktiv ist, wenn sie vom Nutzer nicht aktiv verwendet wird. Das System trifft dies zu, wenn der Nutzer die App über einen bestimmten Zeitraum nicht verwendet und keine der folgenden Bedingungen zutrifft:

  • Der Nutzer startet die App explizit.
  • Die App hat einen Prozess im Vordergrund, entweder als Aktivitäts- oder Dienst im Vordergrund oder wird 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 das Netzteil anschließt, gibt das System Apps aus dem Stand-by-Status frei, sodass sie ungehindert auf das Netzwerk zugreifen und alle ausstehenden Jobs und Synchronisierungen ausführen können. Wenn das Gerät längere Zeit inaktiv ist, lässt das System inaktive Apps einmal am Tag den Netzwerkzugriff zu.

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

Firebase Cloud Messaging (FCM) ist ein Cloud-to-Device-Dienst, mit dem Sie Echtzeit-Downstream-Messaging zwischen Back-End-Diensten und Anwendungen auf Android-Geräten unterstützen können. FCM stellt eine einzelne, dauerhafte Verbindung zur Cloud bereit. Alle Anwendungen, die Echtzeit-Messaging benötigen, können diese Verbindung teilen. Diese gemeinsame Verbindung optimiert den Akkuverbrauch erheblich, da mehrere Apps keine eigenen, separaten persistenten Verbindungen haben müssen, was den Akku schnell entleeren kann. Wenn für Ihre Anwendung eine Messaging-Integration mit einem Back-End-Dienst erforderlich ist, empfehlen wir daher dringend, nach Möglichkeit FCM zu verwenden, anstatt eine eigene persistente Netzwerkverbindung aufrechtzuerhalten.

FCM ist für den Stromsparmodus und App-Standby-Modus optimiert. Mit FCM-Nachrichten mit hoher Priorität können Sie Ihre App aktivieren, um mit dem Nutzer zu interagieren. Im Stromspar- oder App-Stand-by-Modus übermittelt das System die Nachricht und gewährt der App vorübergehenden Zugriff auf Netzwerkdienste und Teil-Wakelocks. Das Gerät oder die App wird dann in den Ruhezustand zurückversetzt. Bei zeitkritischen, für Nutzer sichtbaren Benachrichtigungen empfiehlt es sich, Nachrichten mit hoher Priorität zu verwenden, um die Zustellung im Stromsparmodus zu aktivieren. Nachrichten mit hoher Priorität können zu Benachrichtigungen führen. Weitere Informationen zu Nachrichten mit hoher Priorität finden Sie im FCM-Leitfaden.

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 Stromsparmodus befindet, werden sie während der regelmäßigen Wartungsfenster oder sobald der Nutzer das Gerät aktiviert, ausgeliefert.

Wenn für Ihre Anwendung ein Downstream-Messaging erforderlich ist, empfiehlt es sich, FCM zu verwenden. Wenn in Ihrer App bereits FCM verwendet wird, sollten Nachrichten mit hoher Priorität nur für Nachrichten verwendet werden, die zu Benachrichtigungen für Nutzer führen.

Support für andere Anwendungsfälle

Fast alle Apps können den Stromsparmodus unterstützen, indem sie die Netzwerkverbindung, Alarme, Jobs und Synchronisierungen verwalten und FCM-Nachrichten verwenden. Für eine kleine Gruppe von Anwendungsfällen ist dies möglicherweise nicht ausreichend. Für solche Fälle stellt das System eine konfigurierbare Liste von Anwendungen zur Verfügung, die teilweise von den Energiesparmodus- und App-Standby-Optimierungen ausgenommen sind.

Eine teilweise ausgenommene App kann das Netzwerk verwenden und während des Stromsparmodus und App-Standbys Teil-Wakelocks einsetzen. Andere Einschränkungen gelten jedoch weiterhin für die App, genau wie für andere Apps. Beispielsweise werden die Jobs und Synchronisierungen der Anwendung auf API-Level 23 und niedriger verschoben und die regulären AlarmManager-Alarme werden nicht ausgelöst. Eine Anwendung kann durch Aufrufen von isIgnoringBatteryOptimizations() prüfen, ob sie derzeit auf der Ausnahmeliste ist.

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

Eine Anwendung kann durch Aufrufen von isIgnoringBatteryOptimizations() prüfen, ob sie sich derzeit auf der Ausnahmeliste befindet.

Mit Stromsparmodus und App-Standby testen

Testen Sie Ihre App vollständig im Stromsparmodus und im App-Standby-Modus, um die Nutzerfreundlichkeit zu verbessern.

App mit dem Stromsparmodus testen

So testen Sie den Stromsparmodus:

  1. Konfiguriere ein Hardwaregerät oder ein virtuelles Gerät mit einem System-Image mit Android 6.0 (API-Level 23) oder höher.
  2. Verbinden Sie das Gerät mit Ihrem Entwicklungscomputer und installieren Sie Ihre App.
  3. Führen Sie die App aus und lassen Sie sie aktiv.
  4. Erzwingen Sie mit dem folgenden Befehl das System in den Inaktivitätsmodus:
        $ adb shell dumpsys deviceidle force-idle
        
  5. Wenn Sie bereit sind, beenden Sie den Inaktivitätsmodus mit dem folgenden Befehl:
        $ adb shell dumpsys deviceidle unforce
        
  6. Reaktivieren Sie das Gerät mit dem folgenden Befehl:
        $ adb shell dumpsys battery reset
        
  7. Beobachten Sie das Verhalten Ihrer App, nachdem Sie das Gerät wieder aktiviert haben. Achte darauf, dass die App ordnungsgemäß wiederhergestellt wird, wenn das Gerät den Stromsparmodus beendet.

App mit App Standby testen

So testen Sie den App-Stand-by-Modus mit Ihrer App:

  1. Konfiguriere ein Hardwaregerät oder ein virtuelles Gerät mit einem System-Image mit Android 6.0 (API-Level 23) oder höher.
  2. Verbinden Sie das Gerät mit Ihrem Entwicklungscomputer und installieren Sie Ihre App.
  3. Führen Sie die App aus und lassen Sie sie aktiv.
  4. Erzwingen Sie mit den folgenden Befehlen den App-Stand-by-Modus für die App:
        $ adb shell dumpsys battery unplug
        $ adb shell am set-inactive <packageName> true
        
  5. Verwenden Sie folgende Befehle, um den Ruhemodus der App zu simulieren:
        $ adb shell am set-inactive <packageName> false
        $ adb shell am get-inactive <packageName>
        
  6. Beobachten Sie das Verhalten der App nach dem Aktivieren. Sorgen Sie dafür, dass sich die App reibungslos aus dem Stand-by-Modus wiederherstellen lässt. Prüfe insbesondere, ob die Benachrichtigungen und Hintergrundjobs deiner App wie erwartet funktionieren.

Akzeptable Anwendungsfälle für eine Ausnahme

In der folgenden Tabelle sind mehrere Anwendungsfälle aufgeführt und es wird angegeben, ob Apps in diesen Situationen die Intent-Aktion ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS verwenden dürfen. Im Allgemeinen erfüllt Ihre App diese Ausnahmen nur, wenn der Stromsparmodus oder App-Standby die Kernfunktion der App beeinträchtigt oder es einen technischen Grund gibt, warum Ihre App keine FCM-Nachrichten mit hoher Priorität verwenden kann.

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

Typ Anwendungsfall Kann FCM verwendet werden? Ausnahme akzeptabel? 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 den Ruhemodus der App zu beenden und auf das Netzwerk zuzugreifen.
Ja, verwendet aber keine FCM-Nachrichten mit hoher Priorität.
Instant Messaging-, Chat- oder Anruf-Apps; VoIP-Apps für Unternehmen. Nein, FCM kann aufgrund der technischen Abhängigkeit von einem anderen Messaging-Dienst nicht verwendet werden oder der Stromsparmodus und App-Standby unterbrechen die Kernfunktion der App. Akzeptabel
App „Persönliche Sicherheit“. Apps, die Nutzer und Familien schützen Falls zutreffend Akzeptabel
Aufgabenautomatisierungs-App. Die Hauptfunktion der App ist das Planen automatisierter Aktionen, z. B. für Instant Messaging, Sprachanrufe oder die Verwaltung neuer Fotos. Falls zutreffend Akzeptabel
Companion-App für Peripheriegeräte. Die Hauptfunktion der App besteht darin, eine dauerhafte Verbindung mit dem Peripheriegerät aufrechtzuerhalten, um dem Peripheriegerät Internetzugang bereitzustellen. Falls zutreffend Akzeptabel
Die App muss zur Synchronisierung nur regelmäßig mit einem Peripheriegerät oder nur mit Geräten wie kabellosen Kopfhörern verbunden werden, die über standardmäßige Bluetooth-Profile verbunden sind. Falls zutreffend Nicht zulässig