gpt4 book ai didi

android - 如果我在 Fragments 中使用 ViewBinding,我会在 onDestoryView() 之后有 NPE 吗?

转载 作者:行者123 更新时间:2023-12-04 14:45:08 32 4
gpt4 key购买 nike

我正在尝试在 fragment 中使用 ViewBinding。

首先,谷歌说如下:

Note: Fragments outlive their views. Make sure you clean up any references to the binding class instance in the fragment's onDestroyView() method. [Use view binding in fragments]



所以,我写了如下代码:
private var _binding: ResultProfileBinding? = null
// This property is only valid between onCreateView and
// onDestroyView.
private val binding get() = _binding!!

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

然后,我在 onDestoryView() 之后对 NPE 产生了担忧。

安全吗?假设您在 onDestoryView() 和 onDetact() 之间的某个时间点收到了网络响应

最佳答案

Fragments outlive their views



让我们解释一下,假设您有 Fragment A 和 B(BackStack 中的 A 和 B)相同的容器 View 和相同的 FragmentManager。当您将 fragment A 替换为 B 时。A 的所有 View 元素都将被销毁,但 fragment A 的实例在 fragment BackStack 中仍然存在.这意味着如果您保持 _binding 的值它可能是泄漏,因为它仍然保留 View 引用,但 Android 系统想要清除它。所以谷歌建议你给 _binding赋值null释放 View 引用。

Suppose you received a network response at some point between onDestoryView() and onDetact()



如果 onDestroyView 更新你的 UI,你不应该处理任何网络响应,因为你的 fragment View 没有呈现给用户。

关于android - 如果我在 Fragments 中使用 ViewBinding,我会在 onDestoryView() 之后有 NPE 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62039146/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com