观察者在LiveData中意外添加

时间:2018-08-10 10:53:03

标签: android kotlin observable android-room android-livedata

我正在尝试在我的应用程序中实现Room和Livedata。 我使用LiveData对更改进行更新。

我有一个ViewModel,它返回一个LiveData对象(由Room通过Dao类返回),并且在视图中观察到此LiveData。

我在每个添加断点的地方都设置了断点:

mSessionViewModel.sessionsList.observe(mActivity, Observer<List<Session>> { list ->
        setSessionList(list!!)
    })

但是,当我处于调试状态并且检查LiveData对象的mObservers变量时,我看到mIterators不断增加而没有达到创建观察者的断点(如上):

screenshot of the LiveData object in debug

有人可以向我解释这种行为吗?似乎即使我不创建新观察者,也添加了观察者... 最终可能是检测到LiveData发生更改的次数,但我不希望观察者的列表增加。

1 个答案:

答案 0 :(得分:0)

我经历了类似的事情,导致导航回同一片段时弹出多条消息。我通过确保绑定发生在onCreate而不是onCreateView上来解决了该问题

   override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initObservables()
    }