Say I have a processor that emits a boolean when a button is pressed, think of it as a switch.
boolean gateValue = true; PublishProcessor<Boolean> gate = PublishProcessor.create(); view.onButtonClicked() .subscribe(new Action1<Void>() { @Override public void call(final Void aVoid) { gate.onNext(gateValue = !gateValue); } }));
What I would like to do is use the shutter value to pause and resume the observed sequence, buffering the emitted values ββduring pause.
I read a lot about this, and although this seems possible in reactive extensions for other languages, RxJava does not seem to support it.
Here's an example of what I would like to achieve, it just outputs an incremental value every second. When I press the button, I want the output to stop until I click on it again, which should output every element emitted between two button presses:
Flowable.interval(1, TimeUnit.SECONDS) .bufferWhile(gate) .flatMapIterable(longs -> longs) .subscribe(new Consumer<Long>() { @Override public void accept(final Long aLong) throws Exception { view.displayTime(aLong); } });
Does anyone know a way to achieve something like this?
Edit I wrote a blog post on how to achieve this https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk
source share