【发布时间】:2020-04-01 16:18:15
【问题描述】:
在 Android 开发中使用 MVVM 模式时,我们创建了一个存储库类,我们在其中执行所有网络请求。问题是由于改造的 .enqueue() 方法是异步的,我调用 .enqueue 的方法不会等到回调获得(这很合乎逻辑)并返回 null。 解决此问题的一种方法是将 MutableLiveData 对象传递给我的存储库方法并在回调中设置其值,但我不想在我的视图(片段)中观察我的所有 ViewModel 属性。 解决这个问题的常用方法是什么?
fun createRoute(newRoute: RouteToSend): String {
var responseMessage: String? = null
webService.createRoute(authToken!!, newRoute).enqueue(object: Callback<Message> {
override fun onFailure(call: Call<Message>, t: Throwable) {
Log.e(TAG, t.message!!)
}
override fun onResponse(call: Call<Message>, response: Response<Message>) {
response.body()?.let { responseMessage = it.message }
}
})
return responseMessage!!
}
【问题讨论】: