外观
Activity 跨屏流转时为何可能冻结、重建或重新铺满?
标准回答
跨屏会改变页面所在显示器及可能的尺寸、密度等配置。系统需要让旧内容平稳过渡到新布局。
- 系统可能使用旧 buffer 或快照覆盖过渡阶段,是否出现取决于实现。
- 处理或跳过某些重建,不代表停止接收新 bounds,也不代表不再 layout。
- 联合检查 displayId、Configuration、窗口 bounds、生命周期和 SurfaceFlinger。
通俗例子
页面从窄屏移到宽屏,即使跳过 Activity 重建,窗口尺寸和 View 布局也可能更新,因此仍能铺满;过渡中也可能使用冻结画面。
深入解释
**跨屏到底改了什么:**任务或窗口迁移到另一 display 后,可用区域、密度和配置可能变化。系统与应用需要更新窗口几何、资源选择及 View 布局,必要时才涉及 Activity 重建。
**为什么不重建也能铺满:**保留原 Activity 对象不等于保留旧宽高;窗口重新获得尺寸后,布局可以重新测量并填满新区域。过渡时是否使用截图或冻结层,要结合具体系统实现和 Trace 验证。
易混淆点
skipRelaunch 等定制行为要按目标 ROM 源码与 Trace 解释,不能当成通用 Android 契约。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
17.6.2