我正在制作一个应用程序,(使用MVVM模式),在其中我不想 将数据保存在房间中,并且只希望<每次使用Retrofit的strong> API调用。 我被 NetwrokBoundResource类所困扰,该笔记能够实现执行API调用并简单地在我的Repository类中返回结果的代码。 我已尝试理解此networkboundresource-helper-class-without-room,但所有答案都在科特林中。
我已经完成了一些代码,但是不知道这是正确的方法。
这是我的NetworkBoundResources类
public abstract class NetworkBoundResources<RequestType> {
private MediatorLiveData<Resource<RequestType>> result;
@MainThread
NetworkBoundResources(){
if (result == null) {
result = new MediatorLiveData<>();
}
//result.setValue(Resource.loading(null));
fetchFromNetwork();
}
@MainThread
private void fetchFromNetwork() {
createCall().enqueue(new Callback<RequestType>() {
@Override
public void onResponse(@NonNull Call<RequestType> call,@NonNull Response<RequestType> response) {
result.setValue(Resource.success(response.body()));
}
@Override
public void onFailure(@NonNull Call<RequestType> call,@NonNull Throwable t) {
// result.setValue(Resource.error());
}
});
}
public abstract Call<RequestType> createCall();
public LiveData<Resource<RequestType>> getAsLiveData(){
return result;
}
}
在这里,我对 MediatorLiveData 感到困惑,如何使用 addSource()和 removeSource(),因为我没有使用 dbSource 还是应该使用MutableLiveDate,因为只有一个来源。