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