Android как создать наблюдаемый с переменным интервалом времени

#android #rx-java #observable

#Android #rx-java #наблюдаемый

Вопрос:

Я хочу создать наблюдаемый объект, который излучается каждые x секунд. Этот x может быть переменной в зависимости от некоторого условия.

Прямо сейчас у меня есть что-то, что отправляет мне событие за 4 секунды.

 Observable.interval(4, TimeUnit.SECONDS)
    .takeUntil(new Func1<Long, Boolean>() {
      @Override public Boolean call(Long aLong) {
        return !showNextText;
      }
    })
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.newThread())
    .subscribe(new Action1<Object>() {
      @Override public void call(Object o) {


      }
    }, new Action1<Throwable>() {
      @Override public void call(Throwable throwable) {

      }
    }, new Action0() {
      @Override public void call() {
      }
    });
  

Ответ №1:

Используйте concatMap и timer .

Этот пример будет выдан через 1 секунду, затем через 2 секунды, а затем через 3 секунды.:

 Observable.just(1, 2, 3) 
  .concatMap(n -> Observable.timer(n, TimeUnit.SECONDS)) 
  .doOnNext(System.out::println) 
  .toBlocking().subscribe();
  

Комментарии:

1. Я сильно подозреваю, что оператору требовалось переменное количество времени, а не ряд констант.