Android 继续下一个可观察到的错误

Android 继续下一个可观察到的错误,android,rx-java,rx-android,Android,Rx Java,Rx Android,我有一系列要完成的任务,如果其中任何一个抛出异常,我想继续执行下一个任务 但在这个实现中,如果first-REST调用失败,它会在订户中抛出一个错误 想知道什么是最好的运营商使用,或者我需要调用其他一些功能,使其恢复异常 private void logout() { // Observable from Retrofit to make logout service call requestLogout() .doOnNext(o -> {

我有一系列要完成的任务,如果其中任何一个抛出异常,我想继续执行下一个任务

但在这个实现中,如果first-REST调用失败,它会在订户中抛出一个错误

想知道什么是最好的运营商使用,或者我需要调用其他一些功能,使其恢复异常

private void logout() {
    // Observable from Retrofit to make logout service call
    requestLogout()
            .doOnNext(o -> {
                clearNotifications();
            })
            .doOnNext(o -> {
                unregisterGcm();
            })
            .doOnNext(o -> {
                clearLocalData();
            })
            .doOnNext(o -> {
                // clear all jobs
                mJobManager.clear();
            })
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Object>() {
                @Override
                public void onCompleted() {
                    // no op
                }

                @Override
                public void onError(Throwable e) {
                    mView.navigateToLogin();
                }

                @Override
                public void onNext(Object o) {
                    mView.navigateToLogin();
                }
            });
}
private void注销(){
//从改装到注销服务呼叫可观察到
请求注销()
.doOnNext(o->{
clearNotifications();
})
.doOnNext(o->{
取消注册GCM();
})
.doOnNext(o->{
clearLocalData();
})
.doOnNext(o->{
//清除所有作业
mJobManager.clear();
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
@凌驾
未完成的公共无效(){
//无操作
}
@凌驾
公共无效申报人(可丢弃的e){
mView.navigateToLogin();
}
@凌驾
公共void onNext(对象o){
mView.navigateToLogin();
}
});
}

如果您只想重新订阅,请使用可观察的
重试()

.observeOn(AndroidSchedulers.mainThread())
.retry().subscribe(新订户()){
//代码的其余部分

如果您只想重新订阅,请使用可观察的
重试()

.observeOn(AndroidSchedulers.mainThread())
.retry().subscribe(新订户()){
//代码的其余部分

所以我找到了一种方法来执行所有的观测值,即使其中一个有错误。但这并不能保持秩序

我仍在寻找维持秩序的方法,一旦出现错误,应该继续观察下一次

Observable.mergeDelayError(requestLogout(),
            clearNotifications(),
            unregisterGcm(),
            clearLocalData(),
            clearJobs())
            .first()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Object>() {
                           @Override
                           public void onCompleted() {
                               // no op
                           }

                           @Override
                           public void onError(Throwable e) {
                               mView.navigateToLogin();
                           }

                           @Override
                           public void onNext(Object o) {
                               mView.navigateToLogin();
                           }
                       }
            );
Observable.mergeDelayError(requestLogout(),
clearNotifications(),
取消注册GCM(),
clearLocalData(),
clearJobs())
.first()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
@凌驾
未完成的公共无效(){
//无操作
}
@凌驾
公共无效申报人(可丢弃的e){
mView.navigateToLogin();
}
@凌驾
公共void onNext(对象o){
mView.navigateToLogin();
}
}
);

所以我找到了一种方法来执行所有的观测值,即使其中一个有错误。但这并不能保持秩序

我仍在寻找维持秩序的方法,一旦出现错误,应该继续观察下一次

Observable.mergeDelayError(requestLogout(),
            clearNotifications(),
            unregisterGcm(),
            clearLocalData(),
            clearJobs())
            .first()
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Object>() {
                           @Override
                           public void onCompleted() {
                               // no op
                           }

                           @Override
                           public void onError(Throwable e) {
                               mView.navigateToLogin();
                           }

                           @Override
                           public void onNext(Object o) {
                               mView.navigateToLogin();
                           }
                       }
            );
Observable.mergeDelayError(requestLogout(),
clearNotifications(),
取消注册GCM(),
clearLocalData(),
clearJobs())
.first()
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
@凌驾
未完成的公共无效(){
//无操作
}
@凌驾
公共无效申报人(可丢弃的e){
mView.navigateToLogin();
}
@凌驾
公共void onNext(对象o){
mView.navigateToLogin();
}
}
);
也许吧