在 onDestroyView() 中必须将数据绑定对象设置为 null 吗?

Is it mandatory to set databinding obejct to null inside onDestroyView()?

我读了一些文章,其中说最好的做法是在片段中的 onDestroyView() 内将 databinding 对象设置为 null:

override fun onDestroyView() {
    super.onDestroyView()
    dataBinding = null
}

我也看到了这个 video 甚至没有提到这种做法。我个人不明白这种做法是否有意义。请提供有关此问题的一些信息,因为我真的不知道如何进一步。谢谢

这不是必须的。 databinding 是由编译系统自动生成的。大家可以去看看生成的源码。只需使用 databinding 对象作为公共属性。

没有必要。数据库关闭、网络调用、服务等需要

不是强制性的,但如果您不这样做,可能会导致内存泄漏。

Fragment's lifecycle 不同于 Fragment's view lifecycle

考虑以下示例:

onCreate()
onCreateView()
onDestroyView()
onCreateView()
onDestroyView()
onDestroy()

在这种情况下,用户执行了将片段发送到后台堆栈的操作,然后他按下了后退按钮。 onCreateView 已被调用两次,因此有两个 dataBinding 实例,其中第一个实例尚未被垃圾回收。当然在这种情况下差异不会很明显,但是如果你有一个大的堆栈,你需要考虑释放你所有的 View references inside onDestroyView.