小编Sco*_*per的帖子

在RxJava 2.X中暂停并恢复基于布尔门的observable?

假设我有一个处理器,当按下按钮时会发出一个布尔值,将其视为切换.

    boolean gateValue = true;
    PublishProcessor<Boolean> gate = PublishProcessor.create();
    view.onButtonClicked()
            .subscribe(new Action1<Void>() {
                @Override
                public void call(final Void aVoid) {
                    gate.onNext(gateValue = !gateValue);
                }
            }));
Run Code Online (Sandbox Code Playgroud)

我想要做的是使用门的值来暂停和恢复可观察的序列,在暂停时缓冲发出的值.

我已经阅读了很多内容,虽然它似乎可以在其他语言的反应式扩展中使用,但RxJava似乎并不支持它.

这是我想要实现的一个例子,它只是每秒输出一个增量值.当我按下按钮时,我希望输出停止,直到我再次按下它,这将输出两次按下按钮之间发出的每个项目:

Flowable.interval(1, TimeUnit.SECONDS)
                .bufferWhile(gate)
                .flatMapIterable(longs -> longs)
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(final Long aLong) throws Exception {
                        view.displayTime(aLong);
                    }
                });
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实现这样的事情?

编辑我写了一篇关于如何实现这个的博客文章https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk

android reactive-programming rx-java rx-java2

6
推荐指数
1
解决办法
1215
查看次数

标签 统计

android ×1

reactive-programming ×1

rx-java ×1

rx-java2 ×1