2016-09-03 1 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.interval и оператора Observable.repeat.

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

Извините за лямбды.

+0

Не могли бы вы https://stackoverflow.com/questions/44920829/polling-to-backend-api-in-regular-interval-for-certain-number-of-times-in-a-regu, потому что в моем случае он должен прекратиться с некоторым условием. оценили – Bulu

Смежные вопросы