Android 继续下一个可观察到的错误
我有一系列要完成的任务,如果其中任何一个抛出异常,我想继续执行下一个任务 但在这个实现中,如果first-REST调用失败,它会在订户中抛出一个错误 想知道什么是最好的运营商使用,或者我需要调用其他一些功能,使其恢复异常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 -> {
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();
}
}
);
也许吧