多次设置实时数据值只会向观察者触发最后一次

时间:2020-05-10 18:00:46

标签: android android-livedata android-architecture-components

假设我有这样的实时数据

val aLiveData by lazy { MutableLiveData<String>() }

然后我像这样多次设置它的值

fun setValueMultipleTimes(){
  aLiveData.value = "1"
  aLiveData.value = "2"
  aLiveData.value = "3"
  aLiveData.value = "4"
}

问题是当我执行setValueMultipleTimes()时。只有最后一个值(“ 4”)被触发给aLiveData的观察者

有什么办法可以让我“ 1、2、3”被解雇吗?

1 个答案:

答案 0 :(得分:2)

LiveData旨在向观察者发送单个状态(可能会随时间变化)。它不适用于数据流。如果您要同时发送多个数据项,请考虑将其设为LiveData<Array<String>>而不是LiveData<String>

aLiveData.value = arrayOf("1", "2", "3", "4")

如果您确实想发送数据流而不是发送状态,请考虑改用Kotlin Flow,它更适合该工作。