Skip to content
阅读进度

任务从一个屏幕迁移到另一个屏幕时需要处理什么? ​

返回 Framework 与系统服务 目录

标准回答 ​

迁移会改变任务所属的显示容器,可能同时改变窗口尺寸、密度、方向和 Insets,系统需要更新配置与窗口 Surface 状态。应用可能收到配置变化,也可能被销毁重建,所以必须恢复页面、滚动位置和业务状态,并在正确的 Display 或 Window Context 下获取资源和创建窗口。还要协调输入焦点、IME、Dialog、视频 Surface 和独占资源。迁移过程中我会让临时动画层与任务最终位置协同,处理显示拔除、进程死亡和转场取消,避免画面已迁移而业务状态仍指向旧屏。

延伸追问 ​

跨屏后不一定保持同一个 Activity 实例;只处理 onConfigurationChanged 也不能覆盖所有重建和进程死亡。

内容来源 ​

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