gpt4 book ai didi

android - 在 kotlin 中定义两次字段有什么影响?

转载 作者:行者123 更新时间:2023-12-05 00:18:13 26 4
gpt4 key购买 nike

在探索 GitHub 上的一些存储库时,我发现有些人定义了两次字段,例如

private var _binding: FragmentBinding? = null
private val binding: FragmentBinding get() = _binding!!


override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = FragmentBinding.inflate(layoutInflater)
return binding.root
}
为什么有些开发人员会这样做,为什么不只定义一次该字段
private var binding: FragmentBinding? = null

最佳答案

在此特定上下文中,这样做是为了避免任何 memory leaks . Fragment比他们的 view 更长寿,这意味着对 View 的任何引用都必须设置为 null当 View 被破坏时。所以为了处理内存泄漏,对绑定(bind)对象的引用设置为 nullonDestroyView .在你的情况下onDestroyView应该看起来像

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
所以这解决了内存泄漏问题,但现在还有另一个问题,每次使用 _binding要访问某些 View ,您需要使用 ( !!) 非空断言作为 _binding!!.myView.setOnClickListener等等
为了避免重复使用 ( !!),还有另一个属性 binding ,不为空。所以现在你可以简单地写 binding.myView.setOnClickListener .

关于android - 在 kotlin 中定义两次字段有什么影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68850576/

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