【问题标题】:LiveData observer not getting triggered in Kotlin在 Kotlin 中未触发 LiveData 观察者
【发布时间】:2018-10-15 12:51:30
【问题描述】:

我在我的项目中使用 LiveData 和 Kotlin。

我遇到了一个间歇性问题,其中附加到 MutableLiveData 对象的 Observer 有时没有被触发。

观察者附加在活动 onCreate() 中,(活动作为生命周期所有者)在 ViewModel 中的 LiveData 对象上。

ViewModel 实例化:

mViewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)

设置观察者:

mViewModel.mGoogleDirectionResponse.observe(this, Observer {
            it-> drawRouteonMap(it)
        })

LiveData 对象正在 ViewModel 类的构造函数中初始化。

请注意,这是一个间歇性问题,并非每次都会发生,即有一半以上的时间完全按预期工作。

我做错了什么吗? 您可以推荐此实现的更好做法吗?

【问题讨论】:

  • 您曾经解决过这个问题吗?如果是这样,你能分享一下如何吗?如果没有,您能否提供更多代码/详细信息?

标签: android kotlin viewmodel android-livedata mutablelivedata


【解决方案1】:

假设 mGoogleDirectionResponse 是一个 LiveData 对象,它必须有一个观察者。您还必须调用 postValue(或 setValue)来触发 onChange。 不幸的是,由于缺少详细信息,我无法告诉您更多有关您的 ViewModel 的信息,但您已经可以检查这些要点。

【讨论】:

  • mGoogleDirectionResponse 是一个 MutableLiveData 对象。观察者设置在对象上,如代码所示。是的,我正在使用对象的后值来触发 onChange。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2018-07-22
  • 2018-10-18
相关资源
最近更新 更多