私は次のホットオブザーバブルを持っています:
hotObservable = Observable.interval(0L, 1L, TimeUnit.SECONDS)
.map((t) -> getCurrentTimeInMillis()))
しかし、私はそれを止める良い方法を見つけることができません。フラグ ( )を使用takeWhile
して、これを部分的に解決できました。boolean
runTimer
Observable.interval(0L, 1L, TimeUnit.SECONDS)
.takeWhile((t) -> runTimer)
.map((t) -> getCurrentTimeInMillis()))
ただし、このアプローチには気に入らない点が 2 つあります。
- フラグを維持する必要があり
runTimer
ますが、これは望ましくありません。 - に
runTimer
なるfalse
と、Observable は単純に完了します。つまり、もう一度出力したい場合は、新しい Observable を作成する必要があります。私はそれをしたくありません。もう一度開始するように指示するまで、Observable にアイテムの発行を停止させたいだけです。
私は次のようなことを望んでいました:
hotObservable.stop();
hotObservable.resume();
そうすれば、フラグを保持する必要がなく、オブザーバブルは常に生きています (ただし、イベントを発行していない可能性があります)。
どうすればこれを達成できますか?