【发布时间】:2021-01-13 06:50:17
【问题描述】:
让我们想象以下情况:我们有带有导航组件和 MVVM 架构的 BottomNavigationView。
在 Fragment 的这种情况下,这行代码现在可以工作
onViewCreated()
viewModel.isActionDone.observe(viewLifecycleOwner) {
doReaction()
}
但是这段代码会吗?
private val observer = Observer<Boolean> {
doReaction()
}
onViewCreated()
viewModel.isActionDone.observe(this, observer)
在我的应用程序中,第二个代码运行良好,但第一个代码运行不正常:当我移动到 BottomNavigationView 中的另一个元素时,观察者被多次调用。
附:此代码还多次调用观察者。
viewModel.isActionDone.observe(viewLifecycleOwner, observer)
你能帮我理解第一个代码有什么问题吗?
【问题讨论】:
-
@ADM,我知道我应该使用viewLifecycleOwner,但我还是不明白为什么使用this不会带来多次调用,并且viewLifecycleOwner带来
标签: android kotlin android-livedata android-architecture-navigation android-mvvm