Aktivitätskoordinator-API und -Terminologie

Um die Aktivitätskoordinator-API zu verstehen, ist es wichtig, sich mit den von der API verwendeten Begriffen vertraut zu machen.

Die Aktivitätskoordinator-API koordiniert die Ausführung von aufschiebbaren Vorgängen, die als Aktivitäten bezeichnet werden, auf einem System. Entwickler können die API verwenden, um Benachrichtigungen zu erhalten, wann eine Aktivität basierend auf einem gewünschten Systemstatus gestartet oder beendet werden soll. Dieser Zustand wird durch eine Richtlinie definiert, die die optimalen Bedingungen von Systemressourcen beim Ausführen einer Aktivität beschreibt. Entwickler abonnieren diese Richtlinien, damit Benachrichtigungen an einen bereitgestellten Rückruf gesendet werden, mit dem sie die Ausführung ihrer Aktivität koordinieren.

Hinweis

Diese Benachrichtigungen dienen dazu, Aufgaben mit niedriger Priorität oder ressourcenintensiven Aufgaben zu koordinieren, die auf einen späteren Zeitpunkt verschoben werden können. Wenn eine Aufgabe mit hoher Priorität unabhängig von den Systembedingungen ausgeführt werden muss, sollte sie nicht von dieser API abhängig sein.

API-spezifische Terminologie

Resource

Eine Ressource ist eine physische Komponente oder ein Attribut des Systems, das von einer Aktivität genutzt oder beeinflusst wird. Einfache Beispiele sind herkömmliche Systemressourcen wie CPU, Systemdatenträger und GPU. Weniger herkömmliche Ressourcen umfassen Dinge wie Power und Benutzer-Leerlauf.

Bedingung

Eine Bedingung ist eine qualitative Beschreibung des gewünschten Zustands einer Ressource als gut, mittel oder nicht festgelegt. Im Grunde bedeutet eine gute Bedingung , dass es ein guter Zeitpunkt ist, eine Ressource zu verwenden. Ein bestimmtes Ressourcen-Bedingungspaar kann mit einer Vielzahl von Dimensionen ausgewertet werden.

Entwickler müssen auswählen, welche Bedingungen für einzelne Ressourcen verwendet werden sollen, damit sie den Anforderungen ihrer Workload entsprechen. Dadurch kann die API die Arbeit zwischen ihren Consumern am besten koordinieren.

Zurückverzögerbar

Aufschiebbare Aufgaben sind Aufgaben, die sich nicht sofort auf die Benutzererfahrung einer Anwendung auswirken, obwohl sich die fehlende Ausführung über einen längeren Zeitraum möglicherweise auf die Gesamterfahrung auswirkt. Im Allgemeinen müssen diese Aufgaben nicht sofort ausgeführt werden und können ihre Ausführung auf einen Zeitpunkt verzögern, zu dem sich das System in einem wünschenswerten Zustand befindet. Dies sind Zeiten, in denen die Ausführung der Aufgabe die Benutzerfreundlichkeit oder die Systemleistung nicht beeinträchtigt. Solche Aufgaben können Folgendes umfassen:

  • Neuindizierung eines Medienkatalogs
  • Trainieren oder Aktualisieren eines Empfehlungsmodells
  • Installieren von Plug-In-Updates

Aktivität

Eine Aktivität ist eine vom Entwickler definierte aufschiebende Arbeitseinheit . Aktivitäten verbrauchen systeminterne Ressourcen, die ausgeführt werden sollen, was sich auf die Benutzererfahrung auswirken kann. Entwickler müssen verstehen, wie ihre Aktivität diese Ressourcen verbraucht, damit sie die API entsprechend verwenden können. Dann können sie die Aktivitätsausführung mithilfe der API auf einen idealen Zeitpunkt zurückstellen, anstatt eine solche Arbeit sofort zu Zeiten auszuführen, die sich erheblich auf die Benutzererfahrung auswirken können.

Policy

Richtlinien definieren, was eine ideale Zeit für die Ausführung bedeutet, indem die gewünschten Bedingungen für verschiedene Ressourcen beschrieben werden, die für die Ausführung erforderlich sind oder von der Aktivität des Entwicklers betroffen sind. Eine Richtlinie besteht aus mehreren Ressourcen- und Bedingungenpaaren, die einzelne Ressourcenbedingungen definieren.

Eine Richtlinie kann Bedingungen für Ressourcen wie Energie, Arbeitsspeicher und CPU angeben, aber auch Ressourcen wie GPU basierend auf ihrer Relevanz ausschließen. Eine Richtlinie gilt als offen , wenn alle Ressourcenbedingungen erfüllt sind und andernfalls geschlossen werden. Richtlinien beschreiben nicht, wie viel von einer bestimmten Ressource von einer Aktivität erwartet wird. Die API verwendet Richtlinienkonfigurationen, um Abstimmungsentscheidungen zwischen API-Consumern zu treffen.

Beim Konfigurieren einer Richtlinie wird empfohlen, dass der Entwickler mit der besten (guten) Bedingung für jede Ressource beginnt, damit die API ihnen helfen kann, zu den besten Zeiten auszuführen, wenn die Ausführung die Benutzerfreundlichkeit oder Systemleistung am wenigsten beeinträchtigt. Die Bedingungen können später (z. B. von gut auf mittel) gesenkt werden, wenn die Aktivität nicht häufig genug oder lang genug ausgeführt wird, um die Anforderungen des Entwicklers zu erfüllen.

Subscription

Abonnements sind der Koordinierungsmechanismus für Aktivitäten. Entwickler abonnieren eine Richtlinie mit einem Rückruf, den die API mit Koordinationsbenachrichtigungen aufruft. Diese Benachrichtigungen informieren den Entwickler darüber, wann er seine Aktivität starten/fortsetzen oder beenden/anhalten soll. Benachrichtigungen basieren auf den Ressourcenbedingungen der abonnierten Richtlinie, wie sie zum Zeitpunkt des Abonnements konfiguriert sind, und auf Koordinierungsentscheidungen, die von der API getroffen werden.

Richtlinienvorlage

Ein Element der Aufzählung ACTIVITY_COORDINATOR_POLICY_TEMPLATE. Diese können beim Erstellen einer Richtlinie verwendet werden, um sie mit angemessenen Bedingungen vorzukonfigurieren, die die allgemeinen Anforderungen der meisten Aktivitäten erfüllen und die Auswirkungen auf den Benutzer minimieren.

Downgrade

Sie können eine Richtlinie oder Ressource herabstufen , indem Sie von besseren zu niedrigeren Bedingungen wechseln, um sie freizügiger zu machen und die Wahrscheinlichkeit zu erhöhen, dass die Bedingungen der Richtlinie erfüllt werden. Beispielsweise können Sie eine gute Bedingung für die CPU herabstufen, indem Sie sie in eine mittlere Bedingung ändern. Eine mittlere Bedingung hat weniger restriktive Anforderungen und ist daher wahrscheinlicher, dass sie erfüllt wird. Auf Richtlinienebene erhöht dies die Wahrscheinlichkeit, dass die Richtlinie häufiger und für längere Zeiträume geöffnet wird (alle Ressourcenbedingungen sind erfüllt), wobei berücksichtigt werden kann, dass dies Zeiten sein können, in denen eine größere Wahrscheinlichkeit besteht, dass benutzerbeeinflussende Oder die Systemleistung beeinträchtigt wird.

Verfügbare Aktionen

Die API ermöglicht es dem Entwickler, die folgenden Aktionen auszuführen:

  • Konfigurieren sie eine Richtlinie.
  • Abonnieren/Abbestellen von Benachrichtigungen für Richtlinien.

Die API bietet die Flexibilität beim Anpassen von Richtlinien an das Entwicklerszenario, beginnend mit einer leeren Richtlinienkonfiguration oder einer der Vorlagenkonfigurationen, die auf die Anforderungen der meisten Apps ausgerichtet sind. Im einfachsten Fall:

  • Ordnen Sie eine Richtlinie mithilfe einer Vorlagenrichtlinien-ID innerhalb ACTIVITY_COORDINATOR_POLICY_TEMPLATE zu.

Für ein benutzerdefiniertes Entwicklerszenario:

  • Ordnen Sie eine Vorlagenrichtlinie zu (möglicherweise eine leere Richtlinie).
  • Legen Sie die gewünschten Bedingungen für die relevanten Ressourcen fest.

Übersicht über die Aktivitätskoordinator-API

Auswählen der richtigen Aktivitätskoordinatorrichtlinie

Aktivitätskoordinator-Beispielprojekt