In the following code the "three" and "done" never appears in the output. Looks like the problem is in toList call. Am i using it wrong?
PublishSubject<Boolean> mBooleanPublishSubject = PublishSubject.create();
Observable<Boolean> observable = mBooleanPublishSubject.asObservable().share();
observable
.doOnNext(__ -> System.out.println("one"))
.flatMap(__ -> Observable.just(Arrays.asList(1, 2, 3, 4)))
.flatMapIterable(number -> number)
.doOnNext(v -> System.out.println("two " + v))
.toList()
.doOnNext(v -> System.out.println("three " + v))
.subscribe(v -> System.out.println("done"));
mBooleanPublishSubject.onNext(true);
toList waits for onCompleted event. In your case there is no onCompleted event. Add mBooleanPublishSubject.onCompleted(); and you will see others outputs.
Thanks for the explanation. It works like this
PublishSubject<Boolean> mBooleanPublishSubject = PublishSubject.create();
Observable<Boolean> observable = mBooleanPublishSubject.asObservable().share();
observable
.doOnNext(__ -> System.out.println("one"))
.flatMap(__ -> Observable.just(Arrays.asList(1, 2, 3, 4))
.flatMapIterable(number -> number)
.doOnNext(v -> System.out.println("two " + v))
.toList()
.doOnNext(v -> System.out.println("three " + v)))
.doOnNext(v -> System.out.println("four " + v))
.subscribe(v -> System.out.println("done"));
mBooleanPublishSubject.onNext(true);
mBooleanPublishSubject.onNext(true);
Most helpful comment
Thanks for the explanation. It works like this