2016-08-01 9 views
-2

私はRxで新しいです。異なる時間間隔でWebサービスを呼び出そうとしています。異なる時間間隔でWebサービスを呼び出しますか?

コールAPIを4時間30分ごとに1分、その後、3時間ごとに5分、30分

は私がこれを行う方法を知っている可能android.ifのRxとするべきことは可能ですか?

Observable.interval(1,TimeUnit.MINUTES).takeWhile(Observable.timer(30,TimeUnit.MINUTES).concatWith(Observable.interval(5,TimeUnit.MINUTES).takeWhile(Observable.timer(30,TimeUnit.MINUTES).flatMap(new Func1<Long, Observable<?>>() { 
      @Override 
      public Observable<?> call(Long aLong) { 
       return null; 
      } 
     }).subscribe((new Observer<Object>() { 
      @Override 
      public void onCompleted() { 
       Log.e("working", "onCompleted"); 
      } 

      @Override 
      public void onError(Throwable e) { 
       Log.e("working", "onComThrowablepleted"); 
      } 

      @Override 
      public void onNext(Object o) { 
       Log.e("working", "onNext"); 

      } 
     }); 
     )) 
+0

私たちはこれを行うことができます。私はRxアンドロイドでそれが可能であることを知る必要があります。 – praj

+1

答えは:はい。それが可能だ。 **何か**を試しましたか? –

+0

いいえ、私はrxアンドロイドで新しいです。私はチュートリアルまたはサンプルプロジェクトを知っています – praj

答えて

2

あなたはintervaltakeUntiltimerconcatWithを使用することができます。アイデアは、その後、別のintervalを使用し、intervalを使用し、30分後にそれを停止することです。

// 1 events per minutes 
Observable.interval(1, MINUTES) 
      // and stop it after 30 minutes 
      .takeUntil(Observable.timer(30, MINUTES)) 
      // then 1 events per 5 minutes, and stop it after 30 minutes 
      .concatWith(Observable.interval(5, MINUTES).takeUntil(Observable.timer(30, MINUTES))) 
      // perform webservice call 
      .flatMap(time -> webservice.call()) 
      .subscribe(); 
+0

私はこれについての詳細な説明を教えてください。 – praj

+0

私はthis.butを試してみましたが、私はいくつかのthink.itsが適切に閉じた中括弧が欠けていると思うと思います – praj

+0

うん。 1)欠けていた。例updated – dwursteisen

関連する問題