Subscriber.onErrorが呼び出されると、それ以降のonNextメソッドは
いまさらなんですが、RxJavaでは一度Subscriber.onError
が呼び出されると、それ以降のonNext
メソッドや onComplete
メソッドは呼び出されないということを確認いたしましたので、そういう感じで。
// Gradle compile 'io.reactivex:rxjava:1.1.6' // RxAndroidの最新版が依存しているバージョン
Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { int[] numbers = new int[]{1, 2, 3, 4, 5, 6}; for (int number : numbers) { if (number == 4) { subscriber.onError(new Throwable("error")); } else { subscriber.onNext("next " + number); } } } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("onNext", s); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { Log.d("onError", throwable.toString()); } }, new Action0() { @Override public void call() { Log.d("onComplete", "done!!"); } });
D/onNext: next 1 D/onNext: next 2 D/onNext: next 3 D/onError: java.lang.Throwable: error // 5, 6のログはない