Skip to content
阅读进度

Activity 跨屏流转时为何可能冻结、重建或重新铺满? ​

返回 多屏互动项目 目录

标准回答 ​

跨屏会改变页面所在显示器及可能的尺寸、密度等配置。系统需要让旧内容平稳过渡到新布局。

  • 系统可能使用旧 buffer 或快照覆盖过渡阶段,是否出现取决于实现。
  • 处理或跳过某些重建,不代表停止接收新 bounds,也不代表不再 layout。
  • 联合检查 displayId、Configuration、窗口 bounds、生命周期和 SurfaceFlinger。

通俗例子 ​

页面从窄屏移到宽屏,即使跳过 Activity 重建,窗口尺寸和 View 布局也可能更新,因此仍能铺满;过渡中也可能使用冻结画面。

深入解释 ​

**跨屏到底改了什么:**任务或窗口迁移到另一 display 后,可用区域、密度和配置可能变化。系统与应用需要更新窗口几何、资源选择及 View 布局,必要时才涉及 Activity 重建。

**为什么不重建也能铺满:**保留原 Activity 对象不等于保留旧宽高;窗口重新获得尺寸后,布局可以重新测量并填满新区域。过渡时是否使用截图或冻结层,要结合具体系统实现和 Trace 验证。

易混淆点 ​

skipRelaunch 等定制行为要按目标 ROM 源码与 Trace 解释,不能当成通用 Android 契约。

参考资料 ​

内容来源 ​

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