我正在尝试在片段中使用 ViewBinding。
首先,谷歌是这样说的:
注意:碎片比他们的观点更长久。确保清除片段的 onDestroyView() 方法中对绑定类实例的所有引用。 [在片段中使用视图绑定 https://developer.android.com/topic/libraries/view-binding#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() 之间的某个时刻收到了网络响应
碎片比他们的观点更长久
让我们解释一下,假设您有 Fragment A 和 B(BackStack 中的 A 和 B)相同的容器视图和相同的 FragmentManager。当你用B替换fragment A时。A的所有视图元素都将被销毁,但Fragment A的实例在fragment中仍然存在BackStack
。这意味着如果你保持价值_binding
它可能是泄漏,因为它仍然保留视图引用,但 Android 系统想要清除它。因此 Google 建议您将 null 分配给_binding
释放视图引用。
假设您在 onDestoryView() 和 onDetact() 之间的某个时刻收到了网络响应
如果 onDestroyView 更新您的 UI,您不应该在 onDestroyView 之后处理任何网络响应,因为您的片段视图不会呈现给用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)