暂停和恢复rxJava计时器Android

时间:2017-09-27 15:04:30

标签: java android

我使用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)我怎样才能恢复计时器?假设我暂停了它,那么我怎么能从停止的地方继续计时器呢?

1 个答案:

答案 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