【发布时间】:2016-07-26 21:24:58
【问题描述】:
我想在领域中使用缓存的数据,然后使用改造从服务器更新数据。我通过以下方式做到了这一点:
public void getNotifications() {
Observable.concat(getCashedNotifications(), downloadNotification())
.subscribe(new Action1<List<Notification>>() {
@Override
public void call(List<Notification> notifications) {
setSize(notifications.size() + "");
}
});
}
private Observable<List<Notification>> getCashedNotifications() {
return Observable.just(mRealm.copyFromRealm(mRealm.where(Notification.class).findAll()));
}
private Observable<List<Notification>> downloadNotification() {
return mApiHandler.createRetrofitService(NotificationServices.class)
.getNotificationByUser(10)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(new Action1<NotificationResponse>() {
@Override
public void call(final NotificationResponse notificationResponse) {
setLoading(false);
mRealm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(notificationResponse.getResult().getData().getNotifications());
}
});
}
})
.map(new Func1<NotificationResponse, List<Notification>>() {
@Override
public List<Notification> call(NotificationResponse notificationResponse) {
if (notificationResponse.getResult() != null) {
return notificationResponse.getResult().getData().getNotifications();
} else {
return new ArrayList<>();
}
}
});
}
我的问题是获取当前状态,例如: 1-如果领域中没有数据显示进度 2-如果没有数据和网络显示错误对话框 3-如果领域中有数据并且没有网络仅显示领域中的数据 4- 如果领域中没有数据并且没有来自改造的数据显示没有数据状态
知道如何知道 concat 的结果来自吗? (改造或领域)
【问题讨论】:
标签: android realm rx-java retrofit2 rx-android