我什么时候应该在安卓上删除实时数据观察器?



我正在使用LiveData观察Firestore中的列表。此观察结果取决于另一个身份验证LiveData

我是否应该在创建新观察者之前删除旧的LiveData观察器?如果我不这样做会怎样?

目前我正在使用下一个代码删除观察器,但是如果我不需要,我可以大大简化它,因为我在我的代码中都做了同样的事情

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
...
//Authentication observer which is the ItemAuto dependent
viewModel.auth.observe(viewLifecycleOwner, Observer {auth ->
updateUserItemAutoLiveData(auth)
})
}

private fun updateUserItemAutoLiveData(auth: Auth) {
if (!auth.uid.isNullOrEmpty()) {
removeUserItemAutoObservers()
itemAutoLiveDate = viewModel.getUserItemAutoLiveData(auth.uid)
itemAutoLiveDate!!.observe(viewLifecycleOwner, Observer {
if (it != null) {
if (it.data != null) {
itemAutoCompleteAdapter.submitItemAuto(it)
} 
}
})
} else {
removeUserItemAutoObservers()
}
}
private fun removeUserItemAutoObservers() {
if (itemAutoLiveDate != null && itemAutoLiveDate!!.hasObservers()) {
itemAutoLiveDate!!.removeObservers(this)
}
} 

PS:我正在使用道格史蒂文森教程,这很棒!

如果您使用的是observe方法,LiveData将在onDestroy状态下自动清除。

观察者绑定到生命周期对象并自行清理 当其关联的生命周期被销毁时。

更多信息可以在这里找到

仅当您使用observeForever方法时,才需要手动删除实时数据。之所以需要手动删除它,是因为当您使用该方法时observeForever您没有指定它的生命周期。

相关内容

  • 没有找到相关文章