最大限度地提高测试与 WindowManager 不变性的合规性

为了实现一致且优质的用户体验,并防止导致兼容性测试套件 (CTS) 失败的问题,请实现此处所述的核心 WindowManager (WM) 原则。这些原则有助于确保应用符合汽车应用质量指南。这些原则适用于:

  • 使用多窗口模式架构的 Android 版本,该架构始于 Android 14,并在 Android 15 中通过可伸缩界面得以延续。

  • Android 可扩缩界面和您自己的自定义实现

应用这些原则有助于您主动避免大多数 CTS 合规性和功能测试问题。

术语

不变量
在应用执行期间始终为 true 的逻辑条件,可确保结构完整性。不变量充当边界规则。
特殊活动
也称为“自动界面 activity”或“系统界面 activity”,此关键应用 activity 在屏幕上有一个专用区域,该区域始终可见或大部分时间可见,即使在用户按 Home 时也是如此,例如主导航或集群应用。
标准活动
对系统核心用户界面而言并非至关重要的任何标准应用活动,例如从应用网格启动的第三方媒体应用。

WM 原则

为了最大限度地提高 CTS 合规性,请在 WM 实现中应用以下原则。

在 activity 启动时使用稳定配置

使用单个 WM 过渡启动每个新的标准 activity,该过渡会设置其最终位置、大小和密度。您不得在触发第一个过渡后立即触发第二个过渡来更改底层任务的窗口配置(例如大小或密度),因为这会导致在创建 activity 后立即发生配置更改。

将标准 activity 移至停止状态

当用户导航到主任务或主场景时,您必须将所有正在运行的标准 activity 移至停止状态,以保持 CTS 测试所需的 Android 应用生命周期可预测性。如需详细了解汽车环境中的应用生命周期预期,请参阅在用户体验限制生效期间防止使用

防止标准 activity 内容被遮挡

不得绘制任何会遮挡标准 activity 内容的自定义装饰或界面元素。如果您绘制自定义叠加层(例如自定义气候控制条),则必须使用 SystemOverlay 边衬区向系统报告尺寸。对于 Android 15 及更高版本,请在可伸缩界面中使用 DecorPanel。应用依靠这些边衬区来安全地布局内容

在沉浸模式请求中隐藏叠加层

当应用请求沉浸模式时,您必须隐藏所有临时自定义界面元素并移除其 SystemOverlay inset。持续存在的障碍物会干扰应用的像素预期。如需详细了解应用如何请求和处理沉浸模式,请参阅系统栏、沉浸模式和全屏渲染

仅在显示屏级别应用圆角

仅在显示屏级别应用圆角,方法是在 frameworks/base 中使用适当的资源配置。请勿对标准 activity 的表面应用任意圆角。

这样做会干扰界面元素测试。作为临时措施,您可以为显示屏指定与应用于标准 activity 表面的圆角半径相同的圆角半径。

在沉浸模式请求时保持应用大小

当应用请求进入沉浸模式时,不调整应用窗口的大小。这样做会触发破坏性配置更改。 相反,为了最大限度地利用应用,请提供一个由用户控制的全屏按钮。