ボタンが押されるたびにブール値を発行するプロセッサがあるとしましょう。これをトグルと考えてください。
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);
}
}));
私がやりたいことは、ゲートの値を使用して監視可能なシーケンスを一時停止および再開し、一時停止中に放出された値をバッファリングすることです。
私はこれをよく読みましたが、他の言語のリアクティブ拡張機能では可能だと思われますが、RxJava はそれをサポートしていないようです。
これは私が達成したいことの例です。毎秒増分値を出力するだけです。ボタンを押すと、もう一度押すまで出力を停止し、2 つのボタンを押す間に発行されたすべてのアイテムを出力する必要があります。
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);
}
});
このようなことを達成する方法を知っている人はいますか?
編集これを達成する方法についてブログ投稿を書きましたhttps://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk