Android 9 (API-Level 28) und höher unterstützen App-Standby-Buckets. Mit App-Standby-Buckets kann das System die Ressourcenanfragen von Apps priorisieren, je nachdem, wie aktuell und wie häufig die Apps verwendet werden. Basierend auf den Nutzungsmustern der App wird jede App in einen der fünf Prioritäts-Buckets eingeordnet. Das System schränkt die für jede App verfügbaren Geräteressourcen je nach Bucket ein, in dem sich die App befindet.
Prioritäts-Buckets
Das System weist jeder Anwendung dynamisch eine Prioritätsgruppe zu und weist die Apps nach Bedarf. Das System stützt sich möglicherweise auf eine vorab geladene App, die einen Maschinentyp ermittelt, wie wahrscheinlich es ist, dass jede App verwendet wird, und weist Apps dem geeignete Buckets.
Wenn die System-App auf einem Gerät nicht vorhanden ist, sortiert das System standardmäßig Apps auf Grundlage der letzten Nutzung. Aktiveren Apps werden Buckets mit höherer Priorität zugewiesen, wodurch der App mehr Systemressourcen zur Verfügung stehen. Insbesondere wird durch den Bucket bestimmt, wie häufig die Jobs der App ausgeführt werden und wie oft die App Benachrichtigungen auslösen kann. Diese Einschränkungen gelten nur, wenn das Gerät im Akkubetrieb ist. Während das Gerät auflädt, die vom System nicht auferlegt werden.
Die Prioritäts-Buckets sind:
- Aktiv: Die App wird gerade verwendet oder wurde vor Kurzem verwendet.
- Arbeitssatz: Die App wird regelmäßig verwendet.
- Häufig: Die App wird oft, aber nicht täglich verwendet.
- Selten: Die App wird nicht häufig verwendet.
- Eingeschränkt: Die App verbraucht viele Systemressourcen oder weist unerwünschtes Verhalten auf.
Zusätzlich zu diesen Prioritäts-Buckets gibt es einen speziellen Nie-Bucket für Apps, die installiert, aber nie ausgeführt wurden. Das System schränkt die Nutzung für diese Apps.
Die folgenden Beschreibungen beziehen sich auf den nicht vorhersehbaren Fall. Wenn dagegen Die Vorhersage nutzt maschinelles Lernen, um das Verhalten vorherzusagen, Buckets werden in Prognose der nächsten Aktionen des Nutzers und nicht anhand der letzten Nutzung. So kann beispielsweise eine vor Kurzem verwendete App in den seltenen Bereich eingeordnet werden, weil der Algorithmus vorhersagt, dass die App möglicherweise mehrere Stunden lang nicht verwendet wird.
Aktiv
Eine Anwendung befindet sich im Bucket active, während sie verwendet wird, vor Kurzem verwendet wird, oder wenn eine der folgenden Aktionen ausgeführt wird:
- Startet eine Aktivität.
- Führt einen lange laufenden Dienst im Vordergrund aus.
- Wenn der Nutzer in einer Benachrichtigung darauf tippt
Wenn sich eine App im aktiven Bucket befindet, gelten für die Jobs oder Benachrichtigungen der App keine Einschränkungen.
Apps werden durch Nutzerinteraktionen als aktiv zugewiesen
Unter Android 9 (API-Level 28) und höher wird Ihre App vorübergehend in den Bucket „aktiv“ verschoben, wenn der Nutzer auf bestimmte Weise mit Ihrer App interagiert. Nachdem der Nutzer die Interaktion mit Ihrer App beendet hat, platziert das System sie in einer Bucket basierend auf dem Nutzungsverlauf.
Im Folgenden finden Sie Beispiele für Interaktionen, die dieses Systemverhalten auslösen:
Der Nutzer tippt auf eine Benachrichtigung, die von Ihrer App gesendet wird.
Der Nutzer interagiert mit einem Dienst im Vordergrund in Ihrer App, indem er auf ein Mediensymbol tippt .
Der Nutzer stellt eine Verbindung zu Ihrer App her, während er mit Android Automotive OS interagiert. Dabei verwendet Ihre App entweder einen Dienst im Vordergrund oder
CONNECTION_TYPE_PROJECTION
.
Arbeitssatz
Eine App befindet sich im Bucket Arbeitssatz, wenn sie häufig ausgeführt wird, aber nicht aktiv ist. Eine App für soziale Netzwerke, die der Nutzer fast täglich startet, ist beispielsweise wahrscheinlich Teil des Arbeitssatzes. Anwendungen werden auch zum Bucket für den Arbeitssatz hochgestuft, wenn sie indirekt verwendet werden.
Wenn sich eine App im Arbeitssatz befindet, schränkt das System die Ausführung von Jobs und das Auslösen von Benachrichtigungen leicht ein. Weitere Informationen finden Sie unter Einschränkungen der Energieverwaltung.
Häufig
Eine App wird in den Bereich häufig eingeordnet, wenn sie regelmäßig, aber nicht unbedingt täglich verwendet wird. Eine Trainings-Tracking-App, die der Nutzer im Fitnessstudio verwendet, könnte beispielsweise in den häufigen Bucket fallen.
Wenn sich eine Anwendung im häufigen Bucket befindet, gelten strengere Einschränkungen für damit Jobs ausgeführt und Alarme ausgelöst werden können. Weitere Informationen finden Sie unter Einschränkungen der Energieverwaltung.
Selten
Eine Anwendung befindet sich im selten-Bucket, wenn sie nicht oft verwendet wird. Eine Hotel-App, die der Nutzer nur während seines Aufenthalts in diesem Hotel ausführt, könnte beispielsweise in den seltenen Bucket fallen.
Befindet sich eine Anwendung in diesem seltenen Bucket, gelten strenge Einschränkungen für die Möglichkeit, Jobs auszuführen und Alarme auszulösen. Außerdem schränkt das System die Funktionen der App ein, mit dem Internet verbinden. Weitere Informationen finden Sie unter Energiesparmodus .
Eingeschränkt
Dieser Bucket wurde in Android 12 (API-Level 31) hinzugefügt und hat die niedrigste Priorität und die strengsten Einschränkungen aller Buckets. Das System berücksichtigt z. B. wie oft die Nutzenden damit interagieren, um zu entscheiden, die Anwendung in den eingeschränkten Bucket verschieben.
Unter Android 13 (API-Level 33) und höher wird Ihre App vom System in den eingeschränkten Bereich verschoben, es sei denn, sie kommt für eine Ausnahme infrage. Das ist in den folgenden Fällen der Fall:
Der Nutzer interagiert eine bestimmte Anzahl von Tagen lang nicht mit Ihrer App. An Android 12 (API-Level 31) und 12L (API-Level 32), die Anzahl der Tage ist 45. Unter Android 13 wird die Anzahl der Tage auf 8 Tage reduziert.
Ihre App ruft innerhalb eines Zeitraums von 24 Stunden eine übermäßige Anzahl von Broadcasts oder Bindungen auf.
Wenn Ihre Anwendung vom System in den eingeschränkten Bucket verschoben wird, gilt Folgendes: Es gelten Einschränkungen:
- Sie können in einer 10-minütigen Batch-Sitzung einmal pro Tag Jobs ausführen. Während dieser Sitzung gruppiert das System die Jobs Ihrer App mit den Jobs anderer Apps.
- Eingeschränkte Jobs werden nicht automatisch ausgeführt. Es muss mindestens ein anderer Job gleichzeitig ausgeführt werden oder ausstehen.
- Für Ihre App können weniger Beschleunigte Jobs ausgeführt werden, als wenn das System Ihre App in einen weniger restriktiven Bucket einordnet.
- Ihre App kann einen Wecker pro Tag auslösen. Dieser Alarm kann entweder ein genauer Alarm oder ein ungenauer Alarm sein.
Ausnahmen vom eingeschränkten Bucket
Die folgenden Arten von Apps werden nicht in den eingeschränkten Bucket verschoben und umgehen den Inaktivitätstrigger auch unter Android 12 und höher:
- Apps für Companion-Geräte
- Apps, die auf einem Gerät im Demomodus ausgeführt werden
- Apps vom Geräteeigentümer
- Apps von Profilinhabern
- Dauerhafte Anwendungen
- VPN-Apps
- Apps mit der Rolle
ROLE_DIALER
- Apps, die vom Nutzer in den Systemeinstellungen ausdrücklich als „uneingeschränkt“ gekennzeichnet wurden
- Apps mit aktiven Widgets
- Apps, für die mindestens eine der folgenden Berechtigungen gewährt wurde:
Prioritäts-Bucket bewerten
Führen Sie einen der folgenden Schritte aus, um zu prüfen, welchem Bucket Ihre Anwendung zugewiesen ist:
Rufen Sie
getAppStandbyBucket()
an.Führen Sie den folgenden Befehl in einem Terminalfenster aus:
adb shell am get-standby-bucket PACKAGE_NAME
Das System drosselt Ihre Anwendung, wenn sie sich in einem App-Standby-Bucket befindet.
deren Wert größer als STANDBY_BUCKET_ACTIVE
(10) ist.
Best Practices
Wenn Ihre App den Best Practices für Stromsparmodus und App-Standby entspricht, spätere Energiesparfunktionen leichter zu gestalten. Einige App-Verhaltensweisen, die bisher gut funktioniert haben, können jedoch zu Problemen führen.
- Versuchen Sie nicht, das System so zu manipulieren, dass Ihre App in einem bestimmten Bucket. Die Systemprioritätsmethode kann sich ändern und jedes Gerät kann der Hersteller eine eigene Bucketing-App mit Algorithmus. Stattdessen sollten Sie darauf achten, dass Ihre App unabhängig vom Bucket befindet.
- Wenn eine App keine Launcher-Aktivität hat, wird sie möglicherweise nie zu dem aktiven Bucket. Erwägen Sie, Ihre App umzugestalten, um solche Aktivitäten zu ermöglichen.
Wenn Nutzer nicht mit App-Benachrichtigungen interagieren können, können sie das Angebot der App nicht in den aktiven Bucket verschieben. In diesem Fall sollten Sie Wir haben einige Benachrichtigungen neu gestaltet, damit Nutzer interagieren können. Bei einigen Richtlinien Siehe Material Design Designmuster für Benachrichtigungen.
Wenn die App nach Erhalt einer hohen Priorität keine Benachrichtigung anzeigt: Firebase Cloud Messaging-Nachricht (FCM) angezeigt, mit der der Nutzer nicht interagieren kann und stufen sie in den aktiven Bucket hoch. Die einzige beabsichtigte für FCM-Nachrichten mit hoher Priorität ist die Push-Benachrichtigung an den Nutzer, darf diese Situation nicht eintreten. Wenn Sie unter 12L (API-Ebene 32) eine FCM-Nachricht fälschlicherweise als „hohe Priorität“ kennzeichnen, obwohl sie keine Nutzerinteraktion auslöst, kann es dazu führen, dass zukünftige Nachrichten herabgestuft werden.
Wenn Apps auf mehrere Pakete aufgeteilt sind, befinden sich diese Pakete möglicherweise in verschiedenen Gruppen und haben unterschiedliche Zugriffsebenen. Diese Apps mit dem Paketen, die verschiedenen Buckets zugewiesen sind, um das korrekte Verhalten der Anwendung sicherzustellen.