我有以下 Hot Observable:
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()))
不过,我不喜欢这种方法有两件事:
- 我必须保留旗帜
runTimer
,这是我不想要的。 - 一旦
runTimer
变为false
,Observable 就完成了,这意味着如果我想再次发出,我需要创建一个新的 Observable。我不想要那个。我只希望 Observable 停止发射项目,直到我告诉它重新开始。
我希望有这样的事情:
hotObservable.stop();
hotObservable.resume();
这样我就不需要保留任何标志,并且 observable 始终处于活动状态(尽管它可能不会发出事件)。
我怎样才能做到这一点?