2016-09-03 2 views
3

Ich habe eine Nachrüstung beobachtbar:machen Wiederholt API-Aufruf mit Retrofit und rxjava

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

abonnieren sie die Antwort gibt.

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 
      } 
     }); 

Wie kann ich diesen Anruf alle 60 Sekunden machen, damit ich die Datenbank entsprechend aktualisieren kann?

Antwort

5

Zuerst bitte tun Sie es nicht, wenn Sie es vermeiden können. Es ist besser, die Änderungen zu übernehmen (z. B. GCM) anstatt zu ziehen, um Batterie und Daten zu sparen.

Dazu können Sie eine Kombination aus Observable.interval und Observable.repeat Operator verwenden.

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

Sorry über die Lambdas.

+0

Können Sie bitte https://stackoverflow.com/questions/44920829/polling-to-backend-api-in-regular-interval-for-certain-number-of-times-in-a-regu weil in meinem Fall sollte es mit einer Bedingung beenden. geschätzt – Bulu

Verwandte Themen