使用Rxjava改造和领域

时间:2016-07-26 21:24:58

标签: android realm rx-java retrofit2 rx-android

我想在领域中使用缓存数据,然后使用改造从服务器更新数据。我通过以下方式管理:

matlab -nodesktop -nosplash -r "my_script.m"

我的问题是获取当前状态: 1-如果领域中没有数据显示进度 2-如果没有数据且没有网络显示错误对话框 3-如果领域中有数据且没有网络仅显示来自领域的数据 4-如果领域中没有数据且没有来自改造的数据显示没有数据状态

任何想法如何知道来自concat的resuslts是什么? (改造或领域)

1 个答案:

答案 0 :(得分:0)

我最终将编辑getNotifications方法编辑为以下内容

public void getNotifications() {
    setNoData(false);
    setLoading(false);
    if (ConectivityUtils.isDeviceConnectedToNetwork(mContext)) {
        if (mRealm.where(Notification.class).count() > 0) {
            Observable.concat(getCashedNotifications(), downloadNotification())
                    .subscribe(new Action1<List<Notification>>() {
                        @Override
                        public void call(List<Notification> notifications) {
                            setSize(notifications.size() + "");
                        }
                    });
        } else {
            // show progress
            setLoading(true);
            downloadNotification().subscribe(new Action1<List<Notification>>() {
                @Override
                public void call(List<Notification> notifications) {
                    setLoading(false);
                    if (notifications.size() > 0) {
                        setSize(notifications.size() + "");
                    } else {
                        // no data in realm and retrofit
                        setNoData(true);
                        setErrorMessage("No data");
                    }
                }
            });
        }
    } else {
        if (mRealm.where(Notification.class).count() > 0) {
            getCashedNotifications().subscribe(new Action1<List<Notification>>() {
                @Override
                public void call(List<Notification> notifications) {
                    setSize(notifications.size() + "");
                }
            });
        } else {
            //show no network
            setNoData(true);
            setErrorMessage("No Network");
        }
    }
}

但我相信有比这更好,更清洁的解决方案