Assuming the API is not based on RxJava, you can do something like this:
Observable.just(1)
.map(v -> {
if (api.isVip()) {
if (api.pendingCancel()) {
return 1;
}
return 2;
}
return 3;
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> {
if (v == 1) {
YourVipIsAboutToCancelActivity.start();
} else
if (v == 2) {
CancelVipActivity.start();
} else {
JoinVipActivity.start();
}
});
(Note: Observable.just(1).map().subscribeOn()- my personal favorite way to speed up initial synchronous processing.)
, Retrofit RxJava Observables ( , ?), API Observable<Boolean>, flatMap:
api.isVip()
.flatMap(b -> {
if (b) {
return api.pendingCancel().map(c -> c ? 1 : 2);
}
return Observable.just(3);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(v -> {
if (v == 1) {
YourVipIsAboutToCancelActivity.start();
} else
if (v == 2) {
CancelVipActivity.start();
} else {
JoinVipActivity.start();
}
});