首页 > 解决方案 > NetworkBoundResource 连续调用

问题描述

我有一个基于 kotlin 中的 Android 架构组件的项目。我在存储库中使用了一个经典的抽象 NetworkBoundResource,它将 LiveData 返回给 ViewModel。

在 viewModel 中,我像这样调用存储库方法并将 livedata 绑定到 MediatorLiveData

repository.login(LoginInput(username, password)).apply {
    bindObserver(_loginToken, this)
}

protected fun <R> bindObserver(observer: MediatorLiveData<R>?, source: LiveData<R>) {
    observer?.apply {
        addSource(source) {
            postValue(it)
        }
    }
}

登录完成后,我必须按顺序调用 3 个 WebService(因此存储库中的 3 个方法返回 LiveData 变量)。可以在一个等待实时数据响应的协程中执行此操作吗?

这就是我想要做的(如果可能的话,都在视图模型中):

login
wait for data
get a parameter for the response    
call another ws
wait for response
call another ws
wait for response
call another ws    
wait for response
update LiveData in ViewModel (observed in Fragment)

标签: androidkotlinandroid-livedatakotlin-coroutines

解决方案


推荐阅读