外观
任务从一个屏幕迁移到另一个屏幕时需要处理什么?
标准回答
迁移会改变任务所属的显示容器,可能同时改变窗口尺寸、密度、方向和 Insets,系统需要更新配置与窗口 Surface 状态。应用可能收到配置变化,也可能被销毁重建,所以必须恢复页面、滚动位置和业务状态,并在正确的 Display 或 Window Context 下获取资源和创建窗口。还要协调输入焦点、IME、Dialog、视频 Surface 和独占资源。迁移过程中我会让临时动画层与任务最终位置协同,处理显示拔除、进程死亡和转场取消,避免画面已迁移而业务状态仍指向旧屏。
延伸追问
跨屏后不一定保持同一个 Activity 实例;只处理 onConfigurationChanged 也不能覆盖所有重建和进程死亡。
内容来源
- Android Framework 知识手册 · 原条目
3-6