如何停止和恢复Observable.interval发出滴答声
这将每5秒钟发出一个滴答声。
Observable.interval(5, TimeUnit.SECONDS, Schedulers.io()) .subscribe(tick -> Log.d(TAG, "tick = "+tick));
要停止它,您可以使用
Schedulers.shutdown();
但是,所有调度程序都停止了,以后无法继续进行滴答。如何停止并“优雅地”继续发射?
回答:
这是一种可能的解决方案:
class TickHandler { private AtomicLong lastTick = new AtomicLong(0L);
private Subscription subscription;
void resume() {
System.out.println("resumed");
subscription = Observable.interval(5, TimeUnit.SECONDS, Schedulers.io())
.map(tick -> lastTick.getAndIncrement())
.subscribe(tick -> System.out.println("tick = " + tick));
}
void stop() {
if (subscription != null && !subscription.isUnsubscribed()) {
System.out.println("stopped");
subscription.unsubscribe();
}
}
}
以上是 如何停止和恢复Observable.interval发出滴答声 的全部内容, 来源链接: utcz.com/qa/425952.html