如何停止和恢复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

回到顶部