【问题标题】:How to send an object inside a Coroutine Kotlin?如何在 Coroutine Kotlin 中发送对象?
【发布时间】:2020-09-18 19:44:04
【问题描述】:
我开始在 Kotlin 中使用协程,我想将片段中的一个对象作为参数传递,但我仍然不太了解这个对象是如何发生在这个协程上的,我真的很感激你的帮助
val addObject: LiveData<Object> = liveData {
emit(Result.loading())
try {
emit(Result.success(fetchUser()))
} catch(ioException: Exception) {
emit(Result.error(ioException))
}
}
我必须从我的片段中发送我的对象,然后才能观察它
productViewModel.addObject(Object).observe
【问题讨论】:
标签:
android
kotlin
kotlin-coroutines
【解决方案1】:
你不能在一个没有意义的参数中传递一个对象。
你可能想要做的是这样的事情
视图模型
private val _liveData: MutableLiveData<Object> = MutableLiveData()
val liveData:LiveData<Object>
get() = _liveData
fun addObject(myObject:Object){
// do work here
emit(someData)
}
甚至只是
fun addObject(myObject:Object):LiveData<Object>{
val liveData: MutableLiveData<Object> = MutableLiveData()
viewModelScope.launch {
//do work then emit back
liveData.postValue(it)
}
return liveData
}
活动
viewModel.liveData.observe(this, Observer{
})
viewModel.addObject(myObject)
或者第二个例子
viewModel.addObject(myObject).observe(this, Observer{
})