Android 查看绑定 - 在片段生命周期中清除绑定

Android View Binding - Clear Binding in Fragment Lifecycle

为什么在 Fragment 中实现 Android View Binding 时清除 onDestroyView 中的 binding 很重要?

如文档所示,Use view binding in fragments, and the Android Architecture Components samplebindingonCreateView 中启动,并在 onDestroyView 中清除。

与在 onDestroyView 中启动 binding 而不清除它相比,实施它有什么好处?没有显式清除实例变量binding,应该在Fragment销毁时清除。

private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = ResultProfileBinding.inflate(inflater, container, false)
    val view = binding.root
    return view
}

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

当 Fragment 实例本身仍在内存中时,Fragment 可能会多次创建和销毁其视图。如果您不清空视图引用,那么您将在 onDestroyView()onCreateView() 之间的时间跨度内“泄漏”这些视图。不过它们不会永久泄露,所以这可能是错误的术语。

There are some who say这些观点暂时泄露也无所谓。我不知道生命周期的细节足以知道它是否严格重要。我希望有时视图被拆除的原因是 Android 试图在它们离开屏幕时节省内存,所以如果你坚持它们,你就是在颠覆它。