【问题标题】: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{
        
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-19
      • 2020-07-29
      • 1970-01-01
      • 2020-09-08
      • 2020-05-06
      • 2020-09-28
      • 1970-01-01
      • 2014-10-05
      相关资源
      最近更新 更多