具有Webservice和存储库的MVVM。最好的选择?

时间:2019-06-14 13:04:48

标签: android web-services mvvm

我正在为Android APP开发架构,正在查阅文档

http://127.0.0.1:8081/graphql

但是,尝试测试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服务结果的最佳方法?

谢谢

0 个答案:

没有答案