Вы можете использовать Rx java и Rx Android, добавив эту зависимость, как показано ниже:
//Rx Java
implementation 'io.reactivex.rxjava2:rxjava:2.2.13'
//Rx Android
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
последнюю версию можно найти здесь.
Вам нужен такой Observable:
private final Observable etaUpdateRepeatableObservable =
Observable
.interval(ETA_UPDATE_INTERVALS, TimeUnit.MINUTES)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.repeat();
просто измените ETA_UPDATE_INTERVALS
на свое конкретное значение.
Вам понадобится Одноразовый для подписки на наблюдаемый и удалить его при необходимости (например, onCleared () в ViewModels).
private Disposable etaUpdateDisposable;
Вам нужен Потребитель, чтобы ваша повторяющаяся логика пошла туда.
private final Consumer etaUpdateConsumer = o -> {
//Here you got the repeated logic
};
Теперь вы можете подписаться (начать повторять функцию) и удалить (остановить) наблюдаемое каждый раз, когда вам нужно.
private void addEtaUpdateDisposable() {
if (etaUpdateDisposable == null) {
etaUpdateDisposable = etaUpdateRepeatableObservable.subscribe(etaUpdateConsumer);
}
}
private void disposeEtaUpdate() {
if (
etaUpdateDisposable != null &&
!etaUpdateDisposable.isDisposed()
) {
etaUpdateDisposable.dispose();
etaUpdateDisposable = null;
}
}
person
Sepehr
schedule
14.11.2019