App-Standby-Buckets

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 App-Nutzungsmustern, Die Anwendung wird in einen von fünf Prioritäts-Buckets platziert. Das System schränkt das Gerät ein Ressourcen, die jeder Anwendung zur Verfügung stehen, je nachdem, in welchem Bucket sich die Anwendung befindet.

Prioritäts-Buckets

Das System weist jeder Anwendung dynamisch eine Prioritätsgruppe zu und weist die Apps nach Bedarf. Das System verwendet möglicherweise eine vorinstallierte App, die mithilfe von maschinellem Lernen ermittelt, wie wahrscheinlich die Verwendung einer App ist, und Apps den entsprechenden Gruppen zuweist.

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 kann nur im Akkubetrieb angewendet werden. Während das Gerät geladen wird, gelten diese Einschränkungen nicht.

Die Prioritäts-Buckets sind:

  • Aktiv: Die App wird verwendet oder wurde vor Kurzem verwendet.
  • Arbeitssatz: Die App wird regelmäßig verwendet.
  • Häufig: Die App wird häufig genutzt, aber nicht täglich.
  • Selten: Die App wird nicht häufig verwendet.
  • Eingeschränkt: Die App verbraucht viele Systemressourcen oder unerwünschtes Verhalten.

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 Prognose der nächsten Aktionen des Nutzers und nicht anhand der letzten Nutzung. Für Beispiel: Eine kürzlich verwendete Anwendung gelangt möglicherweise in den seltenen Bucket, wird vorhergesagt, dass die App möglicherweise mehrere Stunden lang nicht verwendet wird.

Aktiv

Eine App wird in den Bereich aktiv eingeordnet, wenn sie verwendet wird, vor Kurzem verwendet wurde oder eine der folgenden Aktionen ausführt:

  • Startet eine Aktivität.
  • Führt einen lange laufenden Dienst im Vordergrund aus.
  • Wird vom Nutzer über eine Benachrichtigung angetippt.

Befindet sich eine Anwendung im aktiven Bucket, schränkt das System auf die Jobs oder Wecker der App zugreifen.

Durch Nutzerinteraktion werden Apps als aktiv zugewiesen

Unter Android 9 (API-Level 28) und höher, wenn der Nutzer in wird Ihre Anwendung vorübergehend im aktiven Bucket platziert. 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 Ihre App sendet.

  • Der Nutzer interagiert mit einem Dienst im Vordergrund in Ihrer App, indem er auf ein Mediensymbol tippt .

  • Der Nutzer verbindet sich mit deiner App, während er mit Android Automotive interagiert. Betriebssystem, bei dem 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. Beispielsweise führt eine Social-Media-App, die der Nutzer fast täglich startet, in der Arbeitsumgebung. Anwendungen werden auch zum Bucket für den Arbeitssatz hochgestuft, wenn sie indirekt verwendet werden.

Wenn sich eine App im Arbeitssatz befindet, wendet das System leichte Einschränkungen für die Möglichkeit, Jobs auszuführen und Alarme auszulösen. Weitere Informationen finden Sie unter Einschränkungen der Energieverwaltung.

Häufig

Eine Anwendung befindet sich im Bucket frequent, wenn sie regelmäßig, aber nicht unbedingt verwendet wird. täglich. Zum Beispiel eine Workout-Tracking-App, die Nutzende im Fitnessstudio laufen möglicherweise im Bucket „frequent“ enthalten.

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 Energiesparmodus .

Selten

Eine App wird in den Bucket selten eingeordnet, wenn sie nicht oft verwendet wird. Beispiel: Ein Hotel die der Nutzer nur während seines Aufenthalts in diesem Hotel ausführt, Bucket.

Befindet sich eine Anwendung im 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, der in Android 12 (API-Level 31) hinzugefügt wurde, hat die niedrigste Priorität und die die höchste Einschränkung aller Buckets. Das System berücksichtigt das Verhalten Ihrer App, z. B. wie oft Nutzer damit interagieren, um zu entscheiden, ob Ihre App in den eingeschränkten Bereich verschoben wird.

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 über eine bestimmte Anzahl von Tagen nicht mit Ihrer App. An Android 12 (API-Level 31) und 12L (API-Level 32), die Anzahl der Tage ist 45. Mit Android 13 wird die Anzahl der Tage auf 8 reduziert.

  • Deine App ruft eine übermäßige Anzahl von Übertragungen oder Bindungen auf. innerhalb von 24 Stunden.

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ährenddessen In dieser Sitzung gruppiert das System die Jobs Ihrer App mit den Jobs anderer Apps Jobs.
    • Eingeschränkte Jobs werden nicht automatisch ausgeführt. Es muss mindestens ein andere Jobs, die gleichzeitig ausgeführt werden oder ausstehen, einschließlich anderen Job zu finden.
  • Ihre Anwendung kann weniger schnelle Jobs ausführen als das System Ihre Anwendung in einem weniger restriktiven Bucket platziert.
  • Deine App kann einen Wecker pro Tag auslösen. Dieser Alarm kann entweder eine genaue oder einen ungenauen Alarm.

Ausnahmen vom eingeschränkten Bucket

Die folgenden Arten von Anwendungen sind vom eingeschränkten Bucket ausgenommen und den Inaktivitätstrigger umgehen, auch unter Android 12 und höher:

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() auf.

  • 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 zuvor gut funktioniert haben, 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 von der 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 die Nutzer nicht mit App-Benachrichtigungen interagieren können, das Hochstufen der Anwendung in den aktiven Bucket auslösen. 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. auf 12L (API-Level 32) und niedriger, wenn Sie eine FCM-Nachricht fälschlicherweise mit hoher Priorität markieren, Nutzerinteraktionen auslösen, kann dazu führen, dass zukünftige Nachrichten ihre Priorität herabgestuft werden.

  • Wenn Apps auf mehrere Pakete verteilt sind, befinden sich diese Pakete möglicherweise in unterschiedliche Buckets und unterschiedliche Zugriffsebenen haben. Diese Apps mit dem Paketen, die verschiedenen Buckets zugewiesen sind, um das korrekte Verhalten der Anwendung sicherzustellen.