Обновление данных раз в N секунд

94
20 сентября 2021, 17:30

Есть локальный источник данных:

Observable<Data> getData();

Есть запрос, чтобы их обновить:

Completable updateData();

Хочу чтобы данные начинали обновляться раз в N секунд, если на них подписаны. Что сделал:

Observable<Object> timer = Observable.interval(N, TimeUnit.SECONDS)
      .flatMap(tick -> updateData().toObservalbe()).retry(N * 1000);
Observable<Data> getUpdatableData(){
   return Observable.merge(timer, getData())
         .filter(o -> o instanceof Data)
         .map(o -> (Data) o);
}

Подскажите как избавиться от пары косяков:

  1. Если подписаться на getUpdatableData() несколько раз, то раз в 10 секунд будет происходить не одно обновление, а по количеству подписок.
  2. Надо избавиться от приведения типов после merge

Задача довольно типичная, но не могу найти хороших примеров.

READ ALSO
Ошибка NullPointerException при вставке данных из xml

Ошибка NullPointerException при вставке данных из xml

В android studio при запуске эмулятора вылетает такая ошибка -

139
при обучении по Шилдту (непонятен нюанс)

при обучении по Шилдту (непонятен нюанс)

код ниже работает все отлично-непонятно другое int miles мы не задавали значений (расстояния) а задали их int dist = 252; По идее же тут вместо miles должно...

178
Сохранение изменений MariaDB

Сохранение изменений MariaDB

Как сохранить результат запроса в таблицу?

118
Свой шрифт в Тильде html-блок

Свой шрифт в Тильде html-блок

Нужна помощь/советМне необходимо в конструкторе сайтов https://tilda

184