title: Pause and resume an observable based on a boolean gate in RxJava 2.X?
body: <p>Let's say I have a Processor that emits a boolean value when ever a button is pressed, think of this as a toggle.</p>
  
  <pre><code>    boolean gateValue = true;
      PublishProcessor&lt;Boolean&gt; gate = PublishProcessor.create();
      view.onButtonClicked()
              .subscribe(new Action1&lt;Void&gt;() {
                  @Override
                  public void call(final Void aVoid) {
                      gate.onNext(gateValue = !gateValue);
                  }
              }));
  </code></pre>
  
  <p>What I would like to do is use the value of the gate to pause and resume an observable sequence, buffering the emitted values whilst paused. </p>
  
  <p>I've read into this a lot and while it seems possible in reactive extensions for other languages, RxJava doesn't seem to support it. </p>
  
  <p>Here's an example of what I'd like to achieve, it simply outputs an incremental value every second. When I press the button I want the output to stop until I press it again which should output every item emitted between the two button presses:</p>
  
  <pre><code>Flowable.interval(1, TimeUnit.SECONDS)
                  .bufferWhile(gate)
                  .flatMapIterable(longs -&gt; longs)
                  .subscribe(new Consumer&lt;Long&gt;() {
                      @Override
                      public void accept(final Long aLong) throws Exception {
                          view.displayTime(aLong);
                      }
                  });
  </code></pre>
  
  <p>Does anyone know of a way to achieve something like this?</p>
  
  <p><strong>Edit</strong> I've written a blog post on how to achieve this <a href="https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk" rel="nofollow noreferrer">https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk</a></p>