WindowManager 不変条件でテストのコンプライアンスを最大化

一貫した高品質のユーザー エクスペリエンスを実装し、互換性テストスイート(CTS)の失敗につながる問題を回避するには、ここに記載されている WindowManager(WM)の基本原則を実装します。これらの原則は、次のものに適用されます。

  • Android 14 で導入され、Android 15 のスケーラブル UI で継続されたマルチウィンドウ アーキテクチャを使用する Android リリース。

  • Android スケーラブル UI と独自のカスタム実装

これらの原則を適用することで、CTS の準拠と機能テストに関するほとんどの問題を事前に回避できます。

用語

不変条件
アプリの実行中に常に真となる論理条件で、構造の整合性につながります。不変条件は境界ルールとして機能します。
特殊なアクティビティ
自動 UI アクティビティまたはシステム UI アクティビティとも呼ばれます。この重要なアプリ アクティビティには、画面上に専用の領域があります。この領域は、ユーザーが [ホーム] を押しても常に表示されるか、ほとんどの場合に表示されます。たとえば、メイン ナビゲーションやクラスタ アプリなどです。
標準アクティビティ
アプリ グリッドから起動されたサードパーティのメディア アプリなど、システムのコアユーザー インターフェースにとって重要ではない標準のアプリ アクティビティ。

WM の基本原則

CTS の準拠を最大限に高めるには、WM 実装で次の原則を適用します。

アクティビティの起動時に安定した構成を使用する

新しい標準アクティビティを起動するたびに、最終的な位置、サイズ、密度を設定する単一の WM トランジションを使用します。最初のトランジションの直後に、基盤となるタスクのウィンドウ構成(サイズや密度など)を変更する 2 回目のトランジションをトリガーしないでください。アクティビティの作成直後に構成が変更されます。

標準アクティビティを停止状態に移行する

ユーザーがホームタスクまたはホームシーンに移動した場合は、実行中の標準アクティビティをすべて停止状態に移行する必要があります。これにより、CTS テストに必要な予測可能な Android アプリのライフサイクルを維持できます。

標準アクティビティのコンテンツが隠れないようにする

標準アクティビティのコンテンツを妨げるカスタム デコレーションや UI 要素を描画しないでください。カスタム オーバーレイ(カスタムの温度調節コントロール バーなど)を描画する場合は、SystemOverlay インセットを使用してサイズをシステムに報告する必要があります。Android 15 以降の場合は、スケーラブル UI で DecorPanel を使用します。

没入モードのリクエスト時にオーバーレイを非表示にする

アプリが没入モードをリクエストした場合は、一時的なカスタム UI 要素を非表示にし、SystemOverlay インセットを削除する必要があります。永続的な障害は、アプリのピクセルの期待値に影響します。

角丸はディスプレイ レベルでのみ適用する

frameworks/base の適切なリソース構成を使用して、ディスプレイ レベルでのみ角丸を適用します。標準アクティビティのサーフェスに任意の角丸を適用しないでください。

UI 要素のテストに支障が生じます。一時的な対策として、標準アクティビティのサーフェスに適用するのと同じ角丸の半径をディスプレイに指定できます。

没入モードのリクエスト時にアプリのサイズを維持する

アプリが没入モードへの移行をリクエストした場合は、アプリのウィンドウのサイズを変更しないでください。構成が変更され、中断が発生します。 代わりに、アプリを最大化するには、ユーザーが制御できる全画面ボタンを提供します。