2017-09-27 81 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

のはなぜですTimersを実行する複数の方法が既に組み込まれている場合に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

関連する問題