2017-09-27 183 views
0

我已經實現了一個使用RxJava的計時器。暫停和恢復rxJava計時器Android

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

爲什麼你已經使用了一個Observable嗎? –

+0

只需要學習ReactiveX範例。 – reg

回答

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

+0

謝謝,現在沒事了。 – reg