【问题标题】:Observers added unexpectedly in LiveDataLiveData 中意外添加的观察者
【发布时间】:2018-08-10 10:53:03
【问题描述】:

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

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

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

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

但是,当我在调试并检查 LiveData 对象的 mObservers 变量时,我发现 mIterators 增加而没有达到创建观察者的断点(如上):

谁能解释我这种行为?即使我不创建新的观察者,似乎也会添加观察者...... 最终可能是检测到 LiveData 变化的次数,但我预计观察者列表不会增加。

【问题讨论】:

  • AFAIK ,他们会继续添加,但是android最终会在一段时间后删除旧的观察者,你不必担心观察者的数量会随着他们的管理而增加
  • 取决于您拥有此代码的位置:mSessionViewModel.sessionsList.observe(

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


【解决方案1】:

我遇到了类似的情况,导致导航回同一片段时弹出多条消息。我通过确保绑定发生在 onCreate 而不是 onCreateView 来修复它

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多