繁体   English   中英

如何在 Coroutine Kotlin 中发送对象?

[英]How to send an object inside a 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{
    
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM