/** * Child Observers will observe the events of the ConnectableObservable on the * specified scheduler. * @param <T> the value type * @param co the connectable observable instance * @param scheduler the target scheduler * @return the new ConnectableObservable instance */ public static <T> ConnectableObservable<T> observeOn(final ConnectableObservable<T> co, final Scheduler scheduler) { final Observable<T> observable = co.observeOn(scheduler); return RxJavaObservablePlugins.onAssembly(new Replay<T>(co, observable)); }
/** * Child Observers will observe the events of the ConnectableObservable on the * specified scheduler. * @param <T> the value type * @param co the connectable observable instance * @param scheduler the target scheduler * @return the new ConnectableObservable instance */ public static <T> ConnectableObservable<T> observeOn(final ConnectableObservable<T> co, final Scheduler scheduler) { final Observable<T> observable = co.observeOn(scheduler); return RxJavaObservablePlugins.onAssembly(new Replay<T>(co, observable)); }
@Test public void testObserveOn() { ConnectableObservable<Integer> co = Observable.range(0, 1000).publish(); Observable<Integer> obs = co.observeOn(Schedulers.computation()); for (int i = 0; i < 1000; i++) { for (int j = 1; j < 6; j++) { List<TestObserver<Integer>> tss = new ArrayList<TestObserver<Integer>>(); for (int k = 1; k < j; k++) { TestObserver<Integer> ts = new TestObserver<Integer>(); tss.add(ts); obs.subscribe(ts); } Disposable s = co.connect(); for (TestObserver<Integer> ts : tss) { ts.awaitTerminalEvent(2, TimeUnit.SECONDS); ts.assertTerminated(); ts.assertNoErrors(); assertEquals(1000, ts.valueCount()); } s.dispose(); } } }
@Test public void testBackpressureFastSlow() { ConnectableObservable<Integer> is = Observable.range(1, Observable.bufferSize() * 2).publish(); Observable<Integer> fast = is.observeOn(Schedulers.computation()) .doOnComplete(new Action() { @Override Observable<Integer> slow = is.observeOn(Schedulers.computation()).map(new Function<Integer, Integer>() { int c;