android - 如何在 Coroutine Kotlin 中发送对象?
问题描述
我开始在 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
解决方案
你不能在一个甚至没有意义的参数中传递一个对象。
你可能想要做的是这样的
视图模型
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{
})
推荐阅读
- jquery - 使用多个模型时的 Asp.net Core 发布表单数据
- c# - XmlSerializer 忽略来自 ISerializable 的 GetObjectData()
- wordpress - “#_no-deeplink-found_”自动附加到主页网址
- c++ - 为琐碎的赋值和析构函数提升无锁队列断言
- flutter - 如何将 mp3 文件从我的资产文件夹复制到文档目录,然后通过 Flutter 中的 whatsapp 共享它?
- ios - Firebase:如何检查用户手机是否已经过验证并自动登录?
- javascript - 在 Vue 实例中渲染文本的问题?
- angular - 表单控件的默认值不显示
- clojure - 使用 boot-cljs 生成生产版本
- asp.net-core-2.2 - Asp.Net 核心临时数据和重定向操作不起作用