Я использую RxAndroid observable
для извлечения некоторого объекта (строка в этом случае). Моя служба выглядит следующим образом:Использовать планирование с помощью 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();
}
});
}
подписаться на мой ведущий и отправить результат в представлении:
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
}
});
}
Это прекрасно работает и все, но я хочу, эта операция будет периодически (каждые х минуты). Я мог бы использовать Timer
или ScheduledThreadPoolExecutor
, чтобы делать это снова и снова, но я хотел бы посмотреть, есть ли какое-то решение в области RxAndroid. Я нашел несколько старых решений с 2013 года, но многие из них устарели в настоящее время. Возможно ли это, используя какую-то рекурсию, или я могу достичь этого более элегантным способом?
Заранее благодарен!
является 'getRandomString' так же, как' getString'? – Blackbelt
Да! Я просто изменил некоторые имена для простоты. –