假设我有这样的实时数据
val aLiveData by lazy { MutableLiveData<String>() }
然后我多次这样设置其值
fun setValueMultipleTimes(){
aLiveData.value = "1"
aLiveData.value = "2"
aLiveData.value = "3"
aLiveData.value = "4"
}
事情是当我执行setValueMultipleTimes()时。只有最后一个值(“ 4”)被触发到aLiveData的Observer
还有什么方法可以使我发射“ 1”,“ 2”,“ 3”?
LiveData旨在将单个状态(可能随时间变化)发送给观察者。它不适用于数据流。如果您有多个数据要同时发送给客户端,请考虑将其设为LiveData<Array<String>>
,而不是LiveData<String>
:
aLiveData.value = arrayOf("1", "2", "3", "4")
[如果您确实确实想发送数据流而不是状态,请考虑使用Kotlin Flow,这对这项工作更好。