Android verfügt über zwei Energiesparfunktionen, die die Akkulaufzeit um Verwaltung des Verhaltens von Apps, wenn ein Gerät nicht an eine Stromquelle angeschlossen ist: Stromsparmodus und App-Standby. Der Stromsparmodus verringert den Akkuverbrauch durch Zeitverzögerung. Hintergrund-CPU- und Netzwerkaktivitäten für Apps, wenn das Gerät längere Zeit nicht verwendet wird für bestimmte Zeiträume. App Standby verzögert Hintergrund-Netzwerkaktivitäten für Apps ohne letzte Nutzeraktivität
Solange sich das Gerät im Stromsparmodus befindet, Zugriff auf bestimmte akkuintensive Ressourcen bis zum Wartungsfenster zurückgestellt. Die spezifischen Einschränkungen aufgeführt sind in Energiesparmodus .
Der Stromsparmodus und App-Standby verwalten das Verhalten aller Apps unter Android 6.0. oder höher, unabhängig davon, ob sie speziell auf API-Level 23 ausgerichtet sind. Teste deine App im Stromsparmodus und in der App, um die Nutzerfreundlichkeit zu optimieren Standby-Modus und nehmen Sie die erforderlichen Anpassungen an Ihrem Code vor. Die folgenden finden Sie weitere Informationen.
Informationen zum Stromsparmodus
Wenn ein Nutzer ein Gerät längere Zeit nicht angeschlossen und nicht verwendet, schaltet das Gerät in den Stromsparmodus. Im Stromsparmodus versucht das System, um den Akku zu schonen, indem du die Zugriff auf netzwerk- und CPU-intensive . Außerdem wird verhindert, dass Apps auf das Netzwerk zugreifen, und ihre Jobs, Synchronisierungen und Standard-Alarme.
Das System beendet den Stromsparmodus in regelmäßigen Abständen für kurze Zeit, damit die Apps abgeschlossen werden können. ausgesetzten Aktivitäten. Während dieser Wartungsfenster schaltet das System führt alle ausstehenden Synchronisierungen, Jobs und Alarme aus und ermöglicht Apps den Zugriff auf das Netzwerk.
<ph type="x-smartling-placeholder">![](https://developer.android.com/static/images/training/doze.png?authuser=9&hl=de)
Nach Ablauf des Wartungsfensters wechselt das System wieder in den Stromsparmodus. Den Netzwerkzugriff sperren und Jobs, Synchronisierungen und Alarme aussetzen Im Laufe der Zeit das System Wartungsfenster seltener einplant, was dazu beiträgt, den Akku zu schonen bei längerer Inaktivität, während das Gerät gerade nicht geladen wird.
Wenn der Nutzer das Gerät aktiviert, indem er es bewegt, den Bildschirm einschaltet oder Wenn Sie ein Ladegerät anschließen, wird der Stromsparmodus beendet und alle Apps funktionieren wieder normal. Aktivitäten.
Einschränkungen für den Stromsparmodus
Im Stromsparmodus wendet das System die folgenden Einschränkungen auf Ihre Apps an:
- Unterbricht den Netzwerkzugriff.
- Ignoriert Wake Schlösser.
- Standard wird verschoben
AlarmManager
Alarme, einschließlichsetExact()
undsetWindow()
, zum nächsten Wartungsfenster.- Wenn du Alarme einstellen möchtest, die im Stromsparmodus ausgelöst werden, verwende
setAndAllowWhileIdle()
odersetExactAndAllowWhileIdle()
. - Wecker gestellt mit
setAlarmClock()
weiterhin normal schießen. Das System beendet den Stromsparmodus kurz vor diesen brennt.
- Wenn du Alarme einstellen möchtest, die im Stromsparmodus ausgelöst werden, verwende
- Es werden keine WLAN-Scans durchgeführt.
- Synchronisierungsadapter können nicht ausgeführt werden.
- Lässt nicht zu
JobScheduler
ausführen.
Stromspar-Checkliste
- Verwenden Sie nach Möglichkeit Firebase Cloud Messaging (FCM) für nachgelagerte Quellen, Nachrichten.
- Wenn Ihre Nutzer eine Benachrichtigung sofort sehen müssen, verwenden Sie ein <ph type="x-smartling-placeholder"></ph> FCM-Nachricht mit hoher Priorität. Hohe Priorität nur für Nachrichten verwenden, die in einer Benachrichtigung. Weitere Informationen finden Sie unter FCMs Dokumentation zur Nachrichtenpriorität für Android
- Geben Sie in der ersten Nachricht ausreichend Informationen an. Nutzlast, sodass nachfolgender Netzwerkzugriff nicht erforderlich ist.
- Stelle wichtige Alarme mit
setAndAllowWhileIdle()
undsetExactAndAllowWhileIdle()
. - App im Stromsparmodus testen
App an Stromsparmodus anpassen
Der Stromsparmodus kann sich je nach den angebotenen Funktionen unterschiedlich auf Apps auswirken und welche Dienste sie nutzen. Viele Apps funktionieren während des Stromsparzyklus normal unverändert lassen. In einigen Fällen müssen Sie die Art und Weise optimieren, verwaltet Netzwerk, Alarme, Jobs und Synchronisierungen. Apps müssen effizient in jedem Wartungsfenster Aktivitäten verwalten.
Um die Weckerplanung zu erleichtern, kannst du zwei AlarmManager
verwenden:
Methoden: setAndAllowWhileIdle()
und
setExactAndAllowWhileIdle()
Mit diesen Methoden können Sie
die auch im Stromsparmodus ausgelöst werden.
Die Beschränkung des Netzwerkzugriffs wird sich wahrscheinlich auch auf Ihre App auswirken, insbesondere wenn die App auf Echtzeit-Nachrichten wie Tickles oder Benachrichtigungen. Benötigt Ihre App eine dauerhafte Netzwerkverbindung, Nachrichten zu empfangen, verwenden Sie Firebase Cloud Messaging (FCM), wenn möglich.
Um zu überprüfen, ob sich Ihre App im Stromsparmodus wie erwartet verhält, können Sie Folgendes verwenden:
adb
-Befehle, mit denen das System gezwungen wird, den Stromsparmodus zu aktivieren und zu beenden, und
das Verhalten Ihrer App beobachten. Weitere Informationen finden Sie unter
Testen Sie mit Stromsparmodus und App-Standby.
Informationen zum App-Standby
Mit App-Stand-by kann das System erkennen, dass eine App inaktiv ist, wenn der Nutzer aktiv nutzen. Das System ermittelt dies, wenn der Nutzer die App für einen bestimmten Zeitraum berühren und keine der folgenden Bedingungen erfüllt ist gilt:
- Der Nutzer startet die App explizit.
- Im Vordergrund der App wird derzeit ein Prozess ausgeführt, entweder als Aktivität Dienst im Vordergrund bzw. von einer anderen Aktivität oder einem anderen Dienst im Vordergrund verwendet wird. <ph type="x-smartling-placeholder">
- Die App generiert eine Benachrichtigung, die Nutzer auf dem Sperrbildschirm oder in in der Benachrichtigungsleiste.
Wenn der Nutzer das Gerät an ein Netzteil anschließt, gibt das System Apps frei aus dem Standby-Zustand, sodass sie ungehindert auf das Netzwerk zugreifen und ausstehende Jobs und Synchronisierungen. Wenn das Gerät längere Zeit nicht verwendet wird, lässt das System inaktiven Apps etwa einmal täglich Zugriff auf das Netzwerk zu.
Mit FCM kannst du mit deiner App interagieren, wenn das Gerät inaktiv ist
Firebase Cloud Messaging (FCM) ist ein Cloud-zu-Gerät-Dienst, mit dem Sie Echtzeit-Support nachgelagerte Nachrichten zwischen Back-End-Diensten und Apps auf Android-Geräten. FCM stellt eine einzige, dauerhafte Verbindung zur Cloud bereit. Alle Apps, die und Echtzeitnachrichten können diese Verbindung teilen. Diese gemeinsame Verbindung den Akkuverbrauch erheblich reduziert, indem sie Anwendungen erstellen, um ihre eigenen, separaten dauerhaften Verbindungen zu erhalten, die der Akku schnell leer wird. Wenn für Ihre App Messaging erforderlich ist, Integration mit einem Back-End-Dienst. Wir empfehlen dringend die Verwendung von FCM, wenn anstatt Ihre eigene permanente Netzwerkverbindung beizubehalten.
FCM ist für den Stromspar- und App-Standby-Modus optimiert. FCM Nachrichten mit hoher Priorität ermöglichen es Ihnen, Ihre App zu aktivieren, um das Interesse der Nutzer zu wecken. Im Stromsparmodus oder in der App Im Stand-by-Modus übermittelt das System die Nachricht und gewährt der App vorübergehenden Zugriff an Netzwerkdienste und partielle Wakelocks an und gibt das Gerät oder die App dann an den inaktiv sind. Für zeitkritische und für den Nutzer sichtbare Benachrichtigungen sollten Sie eine hohe Nachrichten mit Priorität, um die Zustellung im Stromsparmodus zu ermöglichen. Nachrichten mit hoher Priorität können zu Benachrichtigungen führen. Weitere Informationen finden Sie unter FCMs zu Mitteilungen mit hoher Priorität.
Bei Nachrichten, die nicht zu Benachrichtigungen führen, z. B. wenn App-Inhalte beibehalten werden sollen im Hintergrund auf dem neuesten Stand sind oder Datensynchronisierungen einleiten, FCM mit normaler Priorität verwenden Nachrichten. Nachrichten mit normaler Priorität werden sofort zugestellt, wenn das Gerät nicht im Stromsparmodus. Befindet sich das Gerät im Stromsparmodus, werden sie während der regelmäßigen Stromsparmodus-Wartungsfenster oder sobald der Nutzer das Gerät aktiviert.
Als allgemeine Best Practice gilt: Wenn für Ihre App Downstream-Messaging erforderlich ist, verwenden Sie FCM. Wenn Ihre App bereits FCM verwendet, achten Sie darauf, dass Nachrichten mit hoher Priorität verwendet werden nur für Nachrichten, die zu Benachrichtigungen für den Nutzer führen.
Unterstützung für weitere Anwendungsfälle
Fast alle Apps unterstützen den Stromsparmodus, indem sie die Netzwerkverbindung, Alarme, Jobs und Synchronisierungen und die Verwendung von FCM-Nachrichten. Nur für begrenzte Anwendungsfälle ist dies möglicherweise nicht ausreichend. In solchen Fällen bietet das System eine Konfigurierbare Liste mit Apps, die teilweise vom Stromsparmodus und App-Standby ausgenommen sind Optimierungen vor.
Eine teilweise ausgenommene App kann das Netzwerk verwenden und einen teilweisen Ruhemodus beenden
werden im Stromsparmodus und App-Standby gesperrt. Es gelten jedoch weiterhin andere Einschränkungen.
wie bei anderen Apps auch. Zum Beispiel werden die Jobs und Synchronisierungen
auf API-Ebene 23 und niedriger zurückgestellt und ihre normale
AlarmManager
Wecker werden nicht ausgelöst. Eine App kann prüfen,
die derzeit auf der Ausnahmeliste stehen,
isIgnoringBatteryOptimizations()
Nutzer können die Liste der ausgenommenen Apps in den Einstellungen manuell konfigurieren. > Akku > Akku-Leistungsoptimierung Alternativ kann das System können Sie in Apps Nutzer auffordern, eine Ausnahme zu machen:
- Die meisten Apps können einen Intent aufrufen, der das Ereignis
ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS
- Apps, die einem zulässigen Anwendungsfall entsprechen
kann stattdessen einen Intent aufrufen, der den
ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
Intent-Aktion, mit der der Nutzer die App direkt der Ausnahmeliste hinzufügen kann. ohne die Systemeinstellungen aufzurufen.
Eine App kann durch folgenden Aufruf prüfen, ob sie auf der Ausnahmeliste steht:
isIgnoringBatteryOptimizations()
Mit Stromsparmodus und App-Standby testen
Teste deine App vollständig im Stromsparmodus, um die Nutzerfreundlichkeit zu verbessern und App-Standby.
Apps mit Stromsparmodus testen
So testen Sie den Stromsparmodus:
- Hardwaregerät oder virtuelles Gerät mit einer Android 6.0 (API) konfigurieren Ebene 23) oder höher.
- Verbinden Sie das Gerät mit dem Entwicklungscomputer und installieren Sie die App.
- Führen Sie Ihre App aus und lassen Sie sie aktiv.
- Erzwingen Sie das System mit dem folgenden Befehl in den Inaktivitätsmodus:
$ adb shell dumpsys deviceidle force-idle
- Beenden Sie den Inaktivitätsmodus, sobald Sie bereit sind, indem Sie den folgenden Befehl ausführen:
$ adb shell dumpsys deviceidle unforce
- Reaktivieren Sie das Gerät mit dem folgenden Befehl:
$ adb shell dumpsys battery reset
- Beobachten Sie das Verhalten Ihrer App nach der Reaktivierung des Geräts. Marke Die App wird ordnungsgemäß wiederhergestellt, wenn der Stromsparmodus auf dem Gerät beendet wird.
App mit App-Standby testen
So testen Sie den App-Standby-Modus mit Ihrer App:
- Hardwaregerät oder virtuelles Gerät mit einer Android 6.0 (API) konfigurieren Ebene 23) oder höher.
- Verbinden Sie das Gerät mit dem Entwicklungscomputer und installieren Sie die App.
- Führen Sie Ihre App aus und lassen Sie sie aktiv.
- Erzwingen Sie den App-Stand-by-Modus der App, indem Sie die folgenden Befehle ausführen:
$ adb shell dumpsys battery unplug $ adb shell am set-inactive <packageName> true
- Simulieren Sie den Ruhemodus Ihrer App mit den folgenden Befehlen:
$ adb shell am set-inactive <packageName> false $ adb shell am get-inactive <packageName>
- Beobachten Sie das Verhalten Ihrer App nach dem Aktivieren. Achten Sie darauf, dass die App aus dem Stand-by-Modus wiederhergestellt. Prüfen Sie insbesondere, ob die Benachrichtigungen und Hintergrundjobs erwartungsgemäß funktionieren.
Zulässige Anwendungsfälle für eine Ausnahme
In der folgenden Tabelle sind verschiedene Anwendungsfälle aufgeführt und es wird erklärt, ob sie akzeptabel sind.
Apps, die ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
verwenden
in diesen Situationen die Absicht haben. Ihre App erfüllt diese Anforderungen im Allgemeinen nicht
Ausnahmen, es sei denn, der Stromsparmodus oder der App-Standby-Modus beeinträchtigt die Hauptfunktion der App oder
es gibt einen technischen Grund, warum Ihre App FCM mit hoher Priorität nicht verwenden kann
Nachrichten.
Weitere Informationen finden Sie unter Support für weitere Anwendungsfälle.
Typ | Anwendungsfall | Kann FCM verwendet werden? | Ausnahme zulässig? | Hinweise |
---|---|---|---|---|
Instant Messaging-, Chat- oder Anruf-App. | erfordert die Übermittlung von Echtzeitnachrichten an den Nutzer, während Das Gerät befindet sich im Stromsparmodus oder die App befindet sich im App-Standby-Modus. | Ja, mit FCM | Nicht zulässig | Verwenden Sie FCM-Nachrichten mit hoher Priorität, um die App zu aktivieren und darauf zuzugreifen Netzwerk. |
Ja, aber es werden keine FCM-Nachrichten mit hoher Priorität verwendet. | ||||
Instant Messaging-, Chat- oder Anruf-App VoIP-Apps für Unternehmen. | Nein, FCM kann aufgrund technischer Abhängigkeit von einer anderen Messaging-App nicht verwendet werden. oder der Stromsparmodus und App-Standby die Hauptfunktion 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 ist das Planen automatisierter Aktionen, z. B. für Instant- Nachrichten, Sprachanrufe oder die Verwaltung neuer Fotos. | falls zutreffend. | Akzeptabel | |
Companion-App für Peripheriegeräte | Die Hauptfunktion der App ist die Aufrechterhaltung einer dauerhaften Verbindung zum Peripheriegerät zur Bereitstellung des Peripheriegeräts Internetzugang. | falls zutreffend. | Akzeptabel | |
Die App muss zur Synchronisierung nur regelmäßig eine Verbindung zu einem Peripheriegerät herstellen. oder nur mit Geräten wie kabellosen Kopfhörern, verbundenen über Standard-Bluetooth-Profile. | falls zutreffend. | Nicht zulässig |