App-Standby-Buckets

Android 9 (API-Level 28) und höher unterstützen App-Standby-Buckets. App-Standby Buckets helfen dem System dabei, auf Ressourcenanfragen basierend darauf, 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 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. Aktivere Apps werden automatisch zu Buckets mit höherer Priorität, wodurch mehr Systemressourcen für die App verfügbar. Der Bucket bestimmt insbesondere, wie häufig die Jobs der App ausgeführt werden und wie oft die App Alarme auslösen kann. Diese Einschränkungen kann nur im Akkubetrieb angewendet werden. Während das Gerät auflädt, die vom System nicht auferlegt werden.

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

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 stellt eine Verbindung zu deiner App her, während er mit Android Automotive interagiert. Betriebssystem, bei dem Ihre App entweder einen Dienst im Vordergrund oder CONNECTION_TYPE_PROJECTION

Arbeitssatz

Eine Anwendung befindet sich im Bucket Working set, 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 Energiesparmodus .

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 Anwendung befindet sich im selten-Bucket, 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 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, 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 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, es sei denn, Ihre App erfüllt die Voraussetzungen für ein exception stellt das System Ihre Anwendung in den eingeschränkten Bucket im Situationen:

  • 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. in einem Zeitraum 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 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 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.