常见问题解答

Android 10 是否支持按屏幕进行 VSYNC?

目前还不支持。Android 10 中默认屏幕的 VSYNC 驱动所有屏幕。

各屏幕是否可以单独打开或关闭?

在 Android 10 中,设备电源状态的实现主要是全局性的实现,由默认屏幕的电源状态决定。只有虚拟屏幕可单独开启/关闭,具体是通过将 Surface 设置为 null 来做到。Activity/WindowManager 会对这种状态变化做出响应。

如何动态配置输入与屏幕的关联?

在 Android 10 中,无法通过内置方式动态配置输入和设备之间的关联,但在大多数情况下可以采用一些权宜之计。如需了解详情,请参阅输入路由

如何在屏幕上启用系统装饰?

对于测试环境,最直接的方法是使用“强制使用桌面模式”这一开发者选项,该选项可在所有辅助屏幕上启用系统装饰和 IME 支持。该选项适用于由系统拥有的屏幕(例如物理面板或模拟屏幕),但对于由应用拥有的虚拟屏幕,可能存在使用限制。

对于生产环境,请提供默认配置文件。如需了解详情,请参阅:

如何为特定屏幕配置 activity?

使用 LaunchParamsController,它可截获所有 activity 启动操作并允许系统组件修改用于启动操作的参数。目前,可在 system_server 内使用它。

设备是否可以从辅助屏幕解锁?

Android 10 中默认的锁屏实现方式不是交互式的,不允许解锁。如果能够保障满足基本的安全要求,OEM 可以自行实现锁屏。

  • 设备锁定状态是全局的。
  • 此状态适用于所有屏幕。

如何在与目标不同的屏幕上显示 IME?

IME 只能显示在 DisplayWindowSettings 中配置的屏幕上。如果未对请求输入的屏幕启用配置,则 IME 会显示在默认屏幕上。

如何始终将按键事件发送到特定屏幕?

键盘被视为未指定目标的输入源,因此键盘输入会进入到系统中最上层的聚焦窗口。如需查看指定了目标的按键输入的示例,请参阅 PhoneWindowManager 类中对“返回”/“主屏幕”按钮的实现。这些按键仅以屏幕作为输入目标,但它们会显示在 Android 10 中。

音频是如何处理的?

Android 10 在这方面没有重大改进。Android 10 开始支持在汽车中使用多区音频,但用于处理单独的定向音频流的通用解决方案仍处于待定状态。

能否在多个屏幕上显示同一个应用?

如果应用支持,则可以创建应用 activity 的多个实例。默认情况下,每个实例都在相同的进程下运行。Chrome 便是这样一款应用。使用启动器示例进行这方面的测试很方便,该示例允许有针对性地启动 activity 和请求新实例。

能否为不同的屏幕/用户创建同一应用的多个实例?

AOSP 不允许为同一用户创建同一应用的多个独立的沙盒和进程。与此请求关联的用例需要并发多用户支持,而不是应用级分隔。

如果不同的用户想要使用同一应用,他们应使用各自的个人资料登录。应用级分隔需要针对每个会话登录应用。否则,其他用户的数据可能仍然存在。

Android 10 是否支持多个用户?

不支持。Android 10 支持单个登录用户。