Sto utilizzando un RxAndroid observable
per recuperare alcuni oggetti (String in questo caso). Il mio servizio è simile al seguente:Utilizzare la pianificazione con 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();
}
});
}
mi iscrivo nel mio presentatore e postare il risultato alla vista:
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
}
});
}
Questo funziona bene e tutto, ma voglio questa operazione sia periodicamente (ogni x minuti). Potrei usare uno Timer
o ScheduledThreadPoolExecutor
per farlo più e più volte, ma mi piacerebbe vedere se c'è qualche soluzione nel regno di RxAndroid. Ho trovato alcune vecchie soluzioni dal 2013 ma gran parte del codice è deprecata in questo momento. È possibile utilizzare questo tipo di ricorsione, o posso ottenerlo in un modo più elegante?
Grazie in anticipo!
è 'getRandomString' uguale a' getString'? – Blackbelt
Sì! Ho cambiato alcuni nomi per motivi di semplicità. –