我正在尝试在我的应用程序中实现Room和Livedata。 我使用LiveData对更改进行更新。
我有一个ViewModel,它返回一个LiveData对象(由Room通过Dao类返回),并且在视图中观察到此LiveData。
我在每个添加断点的地方都设置了断点:
mSessionViewModel.sessionsList.observe(mActivity, Observer<List<Session>> { list ->
setSessionList(list!!)
})
但是,当我处于调试状态并且检查LiveData对象的mObservers变量时,我看到mIterators不断增加而没有达到创建观察者的断点(如上):
有人可以向我解释这种行为吗?似乎即使我不创建新观察者,也添加了观察者... 最终可能是检测到LiveData发生更改的次数,但我不希望观察者的列表增加。
答案 0 :(得分:0)
我经历了类似的事情,导致导航回同一片段时弹出多条消息。我通过确保绑定发生在onCreate而不是onCreateView上来解决了该问题
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initObservables()
}