Android 片段中的ViewBinding-可能存在内存泄漏甚至NullPointerException?

Android 片段中的ViewBinding-可能存在内存泄漏甚至NullPointerException?,android,android-fragments,memory-leaks,nullpointerexception,android-viewbinding,Android,Android Fragments,Memory Leaks,Nullpointerexception,Android Viewbinding,显示了一个代码示例,其中绑定属性在onDestroyView()中设置为null 对我来说,显而易见的原因是,视图已被破坏但尚未被破坏的片段可以释放视图的内存。如果片段仍然有对绑定的引用(绑定本身包含对视图的引用),那么这个内存就会泄漏 我的问题是,是否存在缺少将绑定属性设置为null会导致NullPointerException的情况 在这个一般性问题之后,我想基于这个具体的代码示例问同样的问题,首先避免绑定属性: class SampleFragment : Fragment() {

显示了一个代码示例,其中绑定属性在
onDestroyView()
中设置为
null

对我来说,显而易见的原因是,视图已被破坏但尚未被破坏的片段可以释放视图的内存。如果片段仍然有对绑定的引用(绑定本身包含对视图的引用),那么这个内存就会泄漏

我的问题是,是否存在缺少将绑定属性设置为
null
会导致
NullPointerException
的情况

在这个一般性问题之后,我想基于这个具体的代码示例问同样的问题,首先避免
绑定
属性:

class SampleFragment : Fragment()
{
    private val viewModel by sharedViewModel<SampleViewModel>()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View =
            FragmentSampleBinding.inflate(inflater, container, false).apply {
                sampleTextView.text = "foo"

                viewModel.sampleLiveData.observe(viewLifecycleOwner, Observer { sampleText ->
                    sampleTextView.text = sampleText
                })
            }.root
}
类SampleFragment:Fragment()
{
sharedViewModel()提供的私有val视图模型
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图=
碎片样本绑定。充气(充气器、容器、假)。应用{
sampleTextView.text=“foo”
viewModel.sampleLiveData.observe(viewLifecycleOwner,观察者{sampleText->
sampleTextView.text=sampleText
})
}.根
}
我没有财产。绑定的范围仅限于

  • onCreateView()
  • 实时数据观察者的回调
  • 而1。似乎并不重要。我想知道是不是2。这是安全的

    • 关于内存泄漏-我认为实时数据观察范围也通过
      viewLifecycleObserver
      绑定到视图生命周期。因此,如果出现内存泄漏,它不会持续太久

    • 关于
      NullPointerException