Android RX - Observable.timer 只點燃一次

2022-09-01 05:45:12

因此,我试图创建一个定期触发的可观察量,但由于某种我无法弄清楚的原因,它只触发一次。有人能看到我做错了什么吗?

Observable<Long> observable = Observable.timer(delay, TimeUnit.SECONDS, Schedulers.io());

        subscription =  observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<Long>() {
                    @Override
                    public void call(Long aLong) {
                        searchByStockHelper.requestRemoteSearchByStock();
                    }
                });

当前延迟设置为 2


答案 1

计时器操作员的文档是这样说的:

创建在给定延迟后发出特定项的可观察量

因此,您正在观察到的行为是预期的 - 在延迟后仅发出单个项目。timer()

另一方面,间隔运算符将发出间隔给定间隔的项目。

例如,此可观察对象每秒将发出一个项目:

Observable.interval(1, TimeUnit.SECONDS);

答案 2

我知道这个话题很旧,但也许是为了未来的访客。(5分钟倒数计时器)

Disposable timerDisposable = Observable.interval(1,TimeUnit.SECONDS, Schedulers.io())
        .take(300)
        .map(v -> 300 - v)
        .subscribe(
            onNext -> {
                //on every second pass trigger
            },
            onError -> {
                //do on error
            },
            () -> {
                //do on complete
            },
            onSubscribe -> {
                //do once on subscription
            });

推荐