アクティビティコーディネーター API と用語

アクティビティ コーディネーター API を理解するには、API で使用される用語を理解することが重要です。

アクティビティコーディネーター API は 、アクティビティと呼ばれる遅延可能なタスクの実行をシステム上で調整します 開発者は API を使用して、目的のシステム状態に基づいてアクティビティを開始または停止するタイミングの通知を受け取ることができます。 この状態は、アクティビティの実行中のシステムリソースの最適な状態を記述するポリシーによって定義されます。 開発者は、これらのポリシーをサブスクライブして、指定されたコールバックに通知を送信し、それを使用してアクティビティの実行を調整します。

Note

これらの通知は、優先度の低いタスクやリソースを大量に消費するタスクを調整し、後で延期できるようにするためのものです。 システム条件に関係なく実行する必要がある優先度の高いタスクがある場合は、この API に依存しないでください。

API 固有の用語

リソース

リソースは、アクティビティによって消費または影響を受けるシステムの物理コンポーネントまたは属性です。 簡単な例としては、CPU、システムディスク、GPUなどの従来のシステムリソースがあります。 従来型ではないリソースには、電源やユーザーアイドルなどが含まれます。

条件

条件は、リソースの望ましい状態を、、良い 、中程度 または設定されていない状態として定性的に記述したものです。 基本的なレベルでは、 良い状態 は、リソースを使用するのに 良い時期 であることを意味します。 特定のリソースと条件のペアは、さまざまなディメンションを使用して評価できます。

開発者は、ワークロードのニーズに合うように、個々のリソースに使用する条件を選択する必要があります。 これにより、API はコンシューマー間の作業を最適に調整できます。

据え置き可能

遅延可能なタスク は、アプリケーションのユーザーエクスペリエンスにすぐには影響しないタスクですが、長期間にわたって実行されないと、全体的なエクスペリエンスに影響を与える可能性があります。 一般に、これらのタスクはすぐに実行する必要はなく、システムが望ましい状態になるまで実行を延期できます。 これらは、タスクを実行しても、ユーザーのエクスペリエンスやシステムパフォーマンスに干渉しないときです。 このようなタスクには、次のものが含まれます:

  • メディアカタログのインデックスの再作成
  • レコメンデーション モデルのトレーニングまたは更新
  • プラグインアップデートのインストール

アクティビティ

アクティビティ は、開発者によって定義された 遅延可能な作業単位 です。 アクティビティは本質的に実行にシステムリソースを消費するため、ユーザーエクスペリエンスに影響を与える可能性があります。 開発者は、API を適切に使用できるように、アクティビティがこれらのリソースをどのように消費するかを理解する必要があります。 その後、ユーザー エクスペリエンスに大きな影響を与える可能性のある時間にそのような作業をすぐに実行するのではなく、API を使用してアクティビティの実行をより理想的な時間に延期できます。

ポリシー

ポリシーは、 理想的な実行時間 実行時間の意味を、実行に必要な、または開発者のアクティビティによって影響を受けるさまざまなリソースの望ましい条件を記述することによって定義します。 ポリシーは、リソースと条件のいくつかのペアによって形成され、個々の リソース条件を定義します

ポリシーでは、電源、メモリ、CPU などのリソースの条件を指定できますが、GPU などのリソースは関連性に基づいて除外することもできます。 ポリシーは、すべてのリソース条件が満たされた場合に オープン、 が満たされた場合、 クローズ と見なされます。 ポリシーでは、アクティビティが消費すると予想される特定のリソースの量は記述されません。 APIは、ポリシー構成を使用して、APIコンシューマ間の調整を決定します。

ポリシーを構成するときは、開発者が各リソースに最適な (良い) 条件から開始して、実行がユーザー エクスペリエンスやシステム パフォーマンスに影響を与える可能性が最も低い最適なタイミングで API を実行できるようにすることをお勧めします。 開発者のニーズを満たすのに十分な頻度または時間でアクティビティを実行するように通知されない場合、後で条件が下がることがあります(たとえば、良好から中程度)。

サブスクリプション

サブスクリプションは、アクティビティの調整メカニズムです。 開発者はコールバックを使用してポリシーをサブスクライブし、API は調整通知で呼び出します。 これらの通知は、アクティビティを開始/再開または停止/一時停止するタイミングを開発者に通知します。 通知は、サブスクリプション時に設定されたサブスクライブされたポリシーのリソース条件と、API によって行われた調整の決定に基づいています。

ポリシー テンプレート

列挙型 ACTIVITY_COORDINATOR_POLICY_TEMPLATE のメンバー これらは、ポリシーを作成するときに、ほとんどのアクティビティの一般的なニーズを満たし、ユーザーへの影響を最小限に抑えるように設計された合理的な条件でポリシーを事前に構成するときに使用できます。

ダウングレード

ポリシーまたはリソースをダウングレード 条件を「良い」から「低い」に変更して、より寛容にし、ポリシーの条件が満たされる可能性を高めることができます。 たとえば、CPU 状態を の状態に変更することで、 をダウングレードできます。 中程度の条件は要件の制限が少ないため、満たされる可能性が高くなります。 ポリシー レベルでは、ポリシーがより頻繁に、より長い期間開かれる (すべてのリソース条件が満たされる) 可能性が高まりますが、これらのタイミングは、ユーザーに影響を与えたり、システムのパフォーマンスを低下させたりする可能性が高いことを念頭に置いてください。

使用可能なアクション

この API を使用すると、開発者は次のアクションを実行できます。

  • ポリシーを設定します。
  • ポリシーの通知をサブスクライブ/サブスクライブ解除します。

この API は、空のポリシー構成またはほとんどのアプリのニーズを対象とするテンプレート構成の 1 つから開始して、開発者のシナリオに最も適したポリシーをカスタマイズする柔軟性を提供します。 最も単純なケースでは、次のようになります。

  • ACTIVITY_COORDINATOR_POLICY_TEMPLATE内のテンプレートポリシーIDを使用してポリシーを割り当てる

よりカスタムな開発者シナリオでは、

  • テンプレート ポリシーを割り当てます (空のポリシーである可能性があります)。
  • 関連するリソースに必要な条件を設定します。

アクティビティ コーディネーター API の概要

適切なアクティビティコーディネーターポリシーの選択

アクティビティコーディネーターのサンプルプロジェクト