Android如何创建具有不同间隔时间的Observable

时间:2016-10-11 12:31:17

标签: android rx-java observable

我想创建一个每x秒发出一次的observable。这个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 个答案:

答案 0 :(得分:0)

使用concatMaptimer

此示例将在1秒后发出,然后在2秒后发出,然后在3秒后发出:

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