我正在为Android APP开发架构,正在查阅文档
但是,尝试测试android体系结构指南代码,这根本不正确,因为Web服务将是异步的,并且返回语句将在Web服务结束之前被调用。
class UserRepository {
private val webservice: Webservice = TODO()
fun getUser(userId: String): LiveData<User> {
// This isn't an optimal implementation. We'll fix it later.
val data = MutableLiveData<User>()
webservice.getUser(userId).enqueue(object : Callback<User> {
override fun onResponse(call: Call<User>, response: Response<User>) {
data.value = response.body()
}
// Error case is left out for brevity.
override fun onFailure(call: Call<User>, t: Throwable) {
TODO()
}
})
return data
}
}
class UserProfileViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
userRepository: UserRepository
) : ViewModel() {
val userId : String = savedStateHandle["uid"] ?:
throw IllegalArgumentException("missing user id")
val user : LiveData<User> = userRepository.getUser(userId)
}
在我的体系结构中,我们还有一个附加的“存储库”层
哪种是传达异步Web服务结果的最佳方法?
谢谢