Skip to content
阅读进度

跨屏移动时,Activity、Task、Window 和 Display 如何协作? ​

返回 多屏互动项目 目录

标准回答 ​

Activity 是界面组件,Task 组织一组相关 Activity,Window 承载窗口状态,Display 提供显示目标。跨屏时需要协调任务归属、窗口配置、可见性和输入焦点;并不是把一个 View 的坐标移到另一个屏就完成了。

  • 说明项目实际操作的任务或窗口层级,以及权限和目标屏条件。公开的启动到指定显示与移动已有任务是不同能力。
  • 目标屏大小、密度等可能变化,是否触发重建取决于配置变化、组件处理和系统版本;不能断言跨屏一定重建或一定不重建。
  • 任务归属变化、窗口有新内容、目标屏真正可见、焦点路由到正确目标,需要分别观察;一个接口返回不代表全部就绪。

通俗例子 ​

如果目标屏密度不同,旧的像素尺寸可能导致裁切;如果画面已显示但焦点仍在原屏,用户可能看到按钮却点不到。显示与可交互要分别验证。

深入解释 ​

**先确认移动对象:**说明项目实际操作的任务或窗口层级,以及权限和目标屏条件。公开的启动到指定显示与移动已有任务是不同能力。

**再看配置与生命周期:**目标屏大小、密度等可能变化,是否触发重建取决于配置变化、组件处理和系统版本;不能断言跨屏一定重建或一定不重建。

**最后确认显示与输入完成:**任务归属变化、窗口有新内容、目标屏真正可见、焦点路由到正确目标,需要分别观察;一个接口返回不代表全部就绪。

追问与回答 ​

onResume 回调了就是流转完成吗? ​

不是充分条件,还需要结合窗口可见、帧呈现及交互状态判断。

普通应用都能任意移到另一屏吗? ​

受显示属性、启动策略和权限约束,具体能力还需核对系统版本及厂商实现。

易混淆点 ​

AOSP 的职责划分可以解释原理,但不能冒充你项目实际修改过的调用链。

进一步举证 ​

  • 准备实际 API、系统入口和跨屏前后的任务/显示标识。
  • 确认项目对重建、焦点及返回键行为的处理。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。