イベントを構成する

イベントは状態の変化をトリガーし、アクションを開始します。 イベントは、インテントを使用してシステム UI またはプロセスの外部からディスパッチされるシグナルとして機能します。 イベントは、対応が必要な発生についてスケーラブル UI に通知します。

スケーラブル UI イベントは、ハードウェアまたはソフトウェアの変更によってトリガーされるシステム シグナルであり、パネルの状態を変更できます。これらのイベントは、UI レスポンスが必要な発生についてフレームワークに通知します。パネルの状態をより正確に制御するために、組み込みのシステム イベントに加えて、カスタム イベントを定義することもできます。

イベントの構造

必須の一意の識別子(ID)によってイベントが識別されます。この ID は、_System_TaskOpenEvent_System_PanelEmptyEvent など、発生の種類を分類します。

この ID に加えて、イベントはトークン(イベントのコンテキストと詳細を提供する Key-Value ペア)を任意で保持できます。これらのトークンを使用すると、イベントをより細かくフィルタリングできるため、特定の条件でのみ遷移やアクションをトリガーできます。

トークンは、セミコロン(;)で区切られた Key-Value ペアのリストとしてイベントに渡されます。システムでサポートされているキーのリストは次のとおりです。

キー 説明
panelId イベントに関連付けられた特定の UI パネルを識別します。
component イベントにリンクされたアクティビティなど、コンポーネント名を指定します。
package イベントに関連するパッケージ名を示します。
panelToVariantId 特定のコンテキストでパネルのターゲット バリアントを指定します。この属性を使用して、パネルの遷移をリッスンすることでアニメーションをカスケードします。たとえば、パネル A がオープン状態に遷移したときに、パネル B の遷移をクローズ状態にトリガーします。

次に例を示します。

"component=com.android.app;panelId=panel1"

イベントのマッチング ロジック

イベントがディスパッチされると、遷移またはアクションをトリガーするために、定義された条件と照合する必要があります。マッチング プロセスは 2 つのステージで行われます。

  • 厳密なイベント id のマッチング: ディスパッチされたイベントの id は、遷移またはアクション イベント フィルタで指定された id と完全に一致する必要があります。ID が一致しない場合、イベントは一致しないとみなされます。

  • 部分的なイベント トークンのマッチング: イベント ID が一致すると、システムは部分一致を使用して、イベントのトークンをフィルタで定義されたトークンと照合します。

    一致させるには、遷移のイベント定義で指定されたすべての イベント プロパティ(トークン)が、ディスパッチされたイベントの対応するプロパティと厳密に一致する 必要があります。

    ただし、ディスパッチされたイベントには、フィルタで明示的に定義されていない追加のトークンを含めることができます。追加のトークンがあっても一致が妨げられることはありません。代わりに、マッチング評価では無視されます。

    逆に、フィルタで、ディスパッチされたイベントに存在しないトークンを指定した場合や、一致するトークンの値が一致しない場合は、一致とはみなされません。

たとえば、id="app_open"panelId="panel1"component="com.android.myapp.Activity" で発生したときにトリガーされるように定義された遷移について考えてみましょう。

ディスパッチされたイベントに id="app_open"panelId="panel1"、および component="com.android.myapp.Activity" が含まれている場合、一致します。すべてのフィルタ 条件が満たされ、Activity value in the dispatched event is considered a match forcom.android.myapp` のより具体的な値が一致するとみなされます。

ただし、ディスパッチされたイベントが id="app_open"panelId="panel1"、および component="com.android.yourapp.Activity" の場合、一致しません。 idpanelId は一致しますが、遷移の componentcom.android.myapp)は、ディスパッチされたイベントの com.android.yourapp と一致しません。component

遷移トリガー

遷移が一致しても、トリガーされるとは限りません。各イベントに対してトリガーできる遷移は 1 つだけです。スケーラブル UI は、最も近い一致のみをトリガーすることを目指しています。

たとえば、コンポーネント名を持つ遷移とコンポーネント名を持たない遷移(-m)の 2 つが一致する場合、コンポーネント名を持つ遷移のみがトリガーされます。

イベントのディスパッチと処理

イベントは、スケーラブル UI の動的な動作の中心です。イベントは、インテントを使用してシステム UI または外部プロセスからディスパッチできます。

システム イベント

フレームワークは、次のアクションを容易にするいくつかのシステム イベントを定義します。

属性 説明
_System_OnHomeEvent

SYSTEM_HOME_EVENT_ID
システムが [Home] 画面を表示するリクエストを受け取ったことを示します。AAOS では、[ホーム] は、 ウィンドウの柔軟な構成にできます。たとえば、ウィジェットの組み合わせや 地図などです。このイベントは、ユーザーがメインのホーム インターフェースを表示することに依存する遷移やアクションに不可欠です。
_System_TaskOpenEvent

SYSTEM_TASK_OPEN_EVENT_ID

タスクまたはアプリが開かれるとディスパッチされます。この一般的なイベントは、アプリの起動に基づいてアクションまたは遷移をトリガーできます。

このイベントには、panelIdcomponent などのトークンが含まれています。

_System_TaskCloseEvent

SYSTEM_TASK_CLOSE_EVENT_ID
タスクまたはアプリが閉じられたことを通知し、 _System_TaskOpenEvent のカウンターパートとして機能します。これにより、アプリが閉じられたときにシステムが反応できます。これにより、パネルをデフォルトの 状態に戻す遷移をトリガーしたり、他のクリーンアップ アクションを開始したりできます。
_System_TaskPanelEmptyEvent

SYSTEM_TASK_PANEL_EMPTY_EVENT_ID

特定のパネルが空になるとディスパッチされ、トークンとして panelId が含まれるため、どのパネルが空であるかに応じてトリガーがフィルタされます。

このイベントは、堅牢なエラー復旧と、関連するコンテンツがクラッシュまたは予期せず終了した場合にアプリを再起動して、空の UI パネルが表示されないようにするために重要です。

たとえば、ControlBar アプリがクラッシュした場合、そのパネルでこのイベントを検出して ControlBar を自動的に再起動するアクションを構成できます

_System_EnterSuwEvent

SYSTEM_ENTER_SUW_EVENT_ID
システムが設定ウィザード(SUW)に入ったことを示します。このイベント はシステムの準備完了を通知し、システムが初期化されたらアプリを起動したり、指定されたパネルを表示したりするように構成できます。このような重要なシステム状態に入るには、適切な UI の調整やアクションをトリガーするための専用イベントが必要です。
_System_ExitSuwEvent

SYSTEM_EXIT_SUW_EVENT_ID
システムが設定ウィザード(SUW)を終了したことを示します。 _System_EnterSuwEvent と同様に、このイベントを使用すると、デフォルトのアプリを起動したり、標準の UI に遷移したりすることで、セットアップ プロセスの完了に応答できます。
_System_OnAnimationEndEvent

SYSTEM_ON_ANIMATION_END_EVENT_ID
UI でアニメーションが完了するとトリガーされます。このイベントを使用して、視覚的なトランジションの完了に依存する後続のアクションや状態の変化をトリガーできます。

このイベントには、アニメーションの終了時にパネルが終了したバリアントを示す variantId のトークンが含まれています。