Skip to content
阅读进度

Fragment 与它的 View 为什么有两套生命周期? ​

返回 View 与显示链路 目录

标准回答 ​

Fragment 实例和它创建的 View 生命周期不同。进入返回栈等场景中,Fragment 可能保留,但 View 已经 onDestroyView;恢复时重新创建 View。

关键机制 ​

  • 界面绑定在 onViewCreated 后使用;onDestroyView 时释放 ViewBinding 等界面引用,避免旧 View 树被继续持有。
  • 观察仅用于界面的数据时使用 viewLifecycleOwner,确保更新绑定当前 View 的有效生命周期。
  • Fragment 生命周期不会超过宿主或父 Fragment 的允许状态;导航操作也需要考虑状态是否已保存。

通俗例子 ​

一个列表 Fragment 放进返回栈,旧 View 销毁。网络结果晚到时,不应去更新旧 binding;新 View 创建后再观察当前状态。

易混淆点 ​

Fragment 还活着不代表它的 View 也活着;把监听绑定在 Fragment 本身可能让界面更新超出正确时段。

参考资料 ​

内容来源 ​

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