我在收到事件后便立即开始观察此事
Observable.interval(0, 5, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.subscribe()
现在,当另一个事件发生时,我想将间隔重置为0。 我该怎么办?
答案 0 :(得分:1)
这取决于您运行此间隔的环境。
对于其中一个,您可以使用SerialDisposable
并在出现新事件时继续替换内容(从而处置旧内容):
final SerialDisposable interval = new SerialDisposable();
public void onEvent() {
interval.set(
Observable.interval(0, 5, TimeUnit.SECONDS, Schedulers.io())
.subscribe(/* ... */)
);
}
或者,如果您有事件源Observable
,则只需应用switchMap
:
PublishSubject<Event> eventSource = PublishSubject.create();
eventSource.switchMap(event ->
Observable.Observable.interval(0, 5, TimeUnit.SECONDS, Schedulers.io())
)
.subscribe(/* ... */);