【问题标题】:MutableLivedata observer triggeringMutableLivedata 观察者触发
【发布时间】:2018-10-23 18:21:24
【问题描述】:

我对@9​​87654322@ 中的MutableLiveData 有疑问。 MutableLiveDatasetValue 函数是否会触发观察?如果我们改变MutableLiveData的内容而不是setValue,会被触发吗?

【问题讨论】:

    标签: android mvvm viewmodel mutablelivedata


    【解决方案1】:

    我对此表示怀疑。只有以下方法将事件分发到可观察对象:

    liveData.postValue("a");
    liveData.setValue("b");
    

    https://developer.android.com/reference/android/arch/lifecycle/MutableLiveData

    【讨论】:

      【解决方案2】:

      只有调用setValuepostValue 时才会触发。如果你使用 Kotlin,那么你可以为自己编写一个扩展来触发 LiveData

      fun <T> MutableLiveData<T>.trigger() {
          value = value
      }
      

      然后你可以简单地调用:

      mutableLiveData.trigger()
      

      【讨论】:

      • 这是一个可爱的... ...trigger应该是标准成员。
      【解决方案3】:

      setValue()postValue 都会触发事件。唯一不同的是,postValue() 也可以从后台线程触发观察事件。而setValue 必须在主线程中调用。 postValue() 优先于 setValue()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-09
        • 2019-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多