gpt4 book ai didi

android - 我什么时候应该删除 android 上的实时数据观察器?

转载 作者:行者123 更新时间:2023-12-04 23:55:06 27 4
gpt4 key购买 nike

我正在使用 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:我用的是Doug Stevenson tutorial这太棒了!

最佳答案

如果你使用observe方法,LiveData会在onDestroy状态下自动清除。

Observers are bound to Lifecycle objects and clean up after themselveswhen their associated lifecycle is destroyed.

可以找到更多信息here

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

关于android - 我什么时候应该删除 android 上的实时数据观察器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63737845/

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