2015-09-11 6 views
22

私は定期的に発生する観測可能なものを作成しようとしていますが、わからない何らかの理由で一度だけ発生します。誰でも私が間違っていることを見ることができますか?Android RX - Observable.timerは一度だけ起動します

所定の遅延したがって

後に特定のアイテムを発するその観測を作成します。

Observable<Long> observable = Observable.timer(delay, TimeUnit.SECONDS, Schedulers.io()); 

     subscription = observable 
       .subscribeOn(Schedulers.io()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .subscribe(new Action1<Long>() { 
        @Override 
        public void call(Long aLong) { 
         searchByStockHelper.requestRemoteSearchByStock(); 
        } 
       }); 

が現在2

答えて

40

に設定されている遅延the timer operatorのドキュメントは、これは言いますあなたが観察している動作が期待されている - timer()は、遅延の後にただ一つのアイテムを放出する。

The intervalオペレータは、一定の間隔で間隔を空けたアイテムを放出します。

は例えば、この観測は、項目ごとに秒を放出します:

Observable.interval(1, TimeUnit.SECONDS); 
+0

ちょっと、これを同時に見つけました。あなたの助けをありがとうたくさん –

6

私が知っているトピックは古いが、おそらく将来の訪問者のためです。 (5分カウントダウンタイマー)

Disposable timerDisposable = Observable.interval(1,TimeUnit.SECONDS, Schedulers.io()) 
     .take(300) 
     .map(v -> 300 - v) 
     .subscribe(
      onNext -> { 
       //on every second pass trigger 
      }, 
      onError -> { 
       //do on error 
      }, 
      () -> { 
       //do on complete 
      }, 
      onSubscribe -> { 
       //do once on subscription 
      }); 
+0

美しい解決策! –

関連する問題