外观
跨屏移动时,Activity、Task、Window 和 Display 如何协作?
标准回答
Activity 是界面组件,Task 组织一组相关 Activity,Window 承载窗口状态,Display 提供显示目标。跨屏时需要协调任务归属、窗口配置、可见性和输入焦点;并不是把一个 View 的坐标移到另一个屏就完成了。
- 说明项目实际操作的任务或窗口层级,以及权限和目标屏条件。公开的启动到指定显示与移动已有任务是不同能力。
- 目标屏大小、密度等可能变化,是否触发重建取决于配置变化、组件处理和系统版本;不能断言跨屏一定重建或一定不重建。
- 任务归属变化、窗口有新内容、目标屏真正可见、焦点路由到正确目标,需要分别观察;一个接口返回不代表全部就绪。
通俗例子
如果目标屏密度不同,旧的像素尺寸可能导致裁切;如果画面已显示但焦点仍在原屏,用户可能看到按钮却点不到。显示与可交互要分别验证。
深入解释
**先确认移动对象:**说明项目实际操作的任务或窗口层级,以及权限和目标屏条件。公开的启动到指定显示与移动已有任务是不同能力。
**再看配置与生命周期:**目标屏大小、密度等可能变化,是否触发重建取决于配置变化、组件处理和系统版本;不能断言跨屏一定重建或一定不重建。
**最后确认显示与输入完成:**任务归属变化、窗口有新内容、目标屏真正可见、焦点路由到正确目标,需要分别观察;一个接口返回不代表全部就绪。
追问与回答
onResume 回调了就是流转完成吗?
不是充分条件,还需要结合窗口可见、帧呈现及交互状态判断。
普通应用都能任意移到另一屏吗?
受显示属性、启动策略和权限约束,具体能力还需核对系统版本及厂商实现。
易混淆点
AOSP 的职责划分可以解释原理,但不能冒充你项目实际修改过的调用链。
进一步举证
- 准备实际 API、系统入口和跨屏前后的任务/显示标识。
- 确认项目对重建、焦点及返回键行为的处理。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R11