Ich verwende ein RxAndroid observable
, um einige Objekte (String in diesem Fall) abzurufen. Mein Service sieht wie folgt aus:Verwendungsplanung mit RxAndroid
public Observable<String> getRandomString() {
return Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
//code to retrieve result
subscriber.onNext("this is a string");
subscriber.onCompleted();
}
});
}
ich in meinem Moderator abonnieren und poste das Ergebnis der Ansicht:
public void loadRandomString() {
Observable<String> observable = mService.getRandomString();
observable
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() { }
@Override
public void onError(Throwable e) {
mMainView.onError(e.getLocalizedMessage());
}
@Override
public void onNext(String string) {
//do something with string
}
});
}
Dies funktioniert gut, und alle, aber ich möchte diese Operation regelmäßig sein (alle x Protokoll). Ich könnte eine Timer
oder ScheduledThreadPoolExecutor
verwenden, um dies immer wieder zu tun, aber ich würde gerne sehen, ob es eine Lösung im Bereich von RxAndroid gibt. Ich habe einige alte Lösungen aus dem Jahr 2013 gefunden, aber eine Menge des Codes ist zu dieser Zeit veraltet. Ist dies mit einer Rekursion möglich, oder kann ich das eleganter erreichen?
Vielen Dank im Voraus!
ist 'getRandomString' gleich wie 'getString'? – Blackbelt
Ja! Ich habe aus Gründen der Einfachheit einige Namen geändert. –