0

我需要从挂起函数的返回值中获取 liveData。为了这 -

  1. 我可以启动一个协程(例如使用 viewmodelScope)并使用 postValue 来更新一个 MutableLiveData 实例。
val apiLiveData = MutableLiveData<MenuItem?>()
fun getLiveData(): LiveData<MenuItem?> {
        viewModelScope.launch {
             apiLiveData.postValue(Repository.getMenuItem())
        }
        return apiLiveData
}
  1. 我可以使用 livedata {} 并发出挂起函数的返回值。
val apiLiveData: LiveData<MenuItem?> = liveData {
        emit(Repository.getMenuItem())
    }

我应该使用上述哪种方法?

4

2 回答 2

0

如果你打算只用一个 emit() 来制作一个 liveData,那么你最好选择选项 1,因为它会用更少的样板来做同样的事情。

于 2020-05-21T21:02:08.970 回答
0

如果您所做的只是发出一个值,那么除了一个事实之外,我认为两者之间没有任何显着差异。第二个示例创建一个在配置更改期间保持活动一段时间的 LiveData。这可能没有任何显着的好处。

随心所欲地选择你觉得更舒服的东西。似乎第二个示例更简单,代码行更少。

于 2020-05-24T04:09:15.623 回答