【发布时间】:2022-11-04 22:18:07
【问题描述】:
我使用livedata 收集item 数据,在onClicked() 之后我从livedata 中获取这些数据。有什么更好的方法呢?
lifecycleScope.launch {
lifecycleScope.async {
viewModel.fetchItem(args.workId)
}.await()
onClicked()
}
viewModel 中的变量
val item = _item.immutable()
private val _item = MutableLiveData<ViewState<Item?>>()
[...]
// I wait here for data from first code than I collect it because item is liveData as above
private fun onClicked() {
val item = viewModel.item.value?.dataOrNull
[...]
fetchItem 方法
fun fetchItem(id: Int) {
viewModelScope.launch {
_item.postAsyncValue { repository.getItem(id) }
}
}
【问题讨论】:
标签: android kotlin asynchronous kotlin-coroutines android-livedata