我使用RxJava实现了一个计时器。
rx.Subscription subscription = rx.Observable.interval(1000, 1000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).distinct()
.cache().doOnNext(new Action1<Long>() {
@Override
public void call(Long aLong) {
timer.setText(String.valueOf(aLong)); )
.subscribe();
我想知道:
1)如何暂停此计时器?我用了subscription.unsubscribe();它暂停了,但我不知道这是不是一个好主意。
2)我怎样才能恢复计时器?假设我暂停了它,那么我怎么能从停止的地方继续计时器呢?
答案 0 :(得分:0)
我不相信你可以在启动后暂停计时器流。您可以执行的操作是使用Subscription subscription
并致电subscription.unsubscribe()
来停止计时器。然后,当您需要重新启动计时器时,启动一个新计时器并将旧时间添加到新的排放中:
Observable.interval(1000, 1000, TimeUnit.MILLISECONDS)
.map(aLong -> aLong + offset) // where offset was where you last stopped
...
可以在此处找到接近我所描述的解决方案:How to stop and resume Observable.interval emiting ticks