私はObservable毎秒ティックを発する を持っています:
Observable.interval(0, 1, TimeUnit.SECONDS)
.take(durationInSeconds + 1));
この Observable を一時停止して数値の発行を停止し、必要に応じて再開したいと思います。
いくつかの落とし穴があります:
ObservableJavadoc によると、intervalオペレーターはバックプレッシャーをサポートしていません- backpressure に関するRxJava wiki には、 backpressureのフロー制御の代替手段としての Callstack ブロッキングに関するセクションがあります。
生産性の高い Observable を処理するもう 1 つの方法は、コールスタックをブロックすることです (生産性の高い Observable を管理するスレッドを停止します)。これには、Rx の「リアクティブ」でノンブロッキング モデルに反するという欠点があります。ただし、問題のある Observable が安全にブロックできるスレッド上にある場合、これは実行可能なオプションになる可能性があります。現在、RxJava はこれを容易にするためのオペレーターを公開していません。
intervalObservableを一時停止する方法はありますか? または、バックプレッシャーをサポートする独自の「刻む」Observableを実装する必要がありますか?