【发布时间】:2019-08-29 05:48:09
【问题描述】:
我在我的应用程序中使用 MVVM 架构组件。任务是使用 MVVM 添加改造。
我每隔 10 秒调用一次网络服务器以获取响应数据。要更新此值,我正在使用 Mediator 实时数据。 这是它的代码
public LiveData<LiveResponse.ResponseData> getLiveResponse(String userId, String tokenId, BodyRequest bodyRequest) {
final MutableLiveData<LiveResponse.ResponseData> liveResponseMutableLiveData = new MutableLiveData<>();
restApiService.getLiveResponse(userId, tokenId,bodyRequest).enqueue(new Callback<LiveResponse>() {
@Override
public void onResponse(@NotNull Call<LiveResponse> call, @NotNull Response<LiveResponse> response) {
try {
if (response.body()!=null){
if (response.body().isSuccess()){
Timber.i(" liveResponseMutableLiveData onResponse:");
liveResponseMutableLiveData.setValue(response.body().getResponseData());
}
}
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onFailure(@NotNull Call<LiveResponse> call, @NotNull Throwable t) {
liveResponseMutableLiveData.setValue(null);
}
});
return liveResponseMutableLiveData;
}
即使响应已更改,我也面临获取更新值的问题。
以及如何在调用此方法时显示进度条并在我的视图模型中显示错误(如果有)。
【问题讨论】:
-
你在这里混淆了两个东西 Mutable Live data 和 Mediator livedata。
标签: android mvvm retrofit2 android-livedata mutablelivedata