2016-09-03 119 views
3

我觀察到的一個改型:反覆做API調用與改造和rxjava

@GET("something/") 
Observable<Something> getSomething(); 

訂閱它給人的響應。

getSomething().subscribe(new Subscriber<Something>() { 
      @Override 
      public void onCompleted() { 
      } 

      @Override 
      public void onError(Throwable e) { 
      } 

      @Override 
      public void onNext(Something something) { 
       //update database of something 
      } 
     }); 

我該如何每60秒進行一次這個調用,以便我可以相應地更新數據庫?

回答

5

首先請不要這樣做,如果你能避免它。推薦更改(例如GCM)而不是拉動以節省電池和數據。

爲此,您可以使用Observable.intervalObservable.repeat運算符的組合。

Observable.interval(60, TimeUnit.SECONDS) 
    .flatMap(n -> getSomething()) 
    .repeat() 
    .subscribe(); 

抱歉有關lambda。

+0

你能否請https://stackoverflow.com/questions/44920829/polling-to-backend-api-in-regular-interval-for-certain-number-of-times-in-a-regu因爲在我的它應該以某種條件終止。讚賞 – Bulu