在背压缓冲区溢出后的一段时间内跳过项目

时间:2016-12-14 01:32:49

标签: rx-java rx-android

我的使用案例是使用Snackbar在Android应用中显示通知。我一次只能显示一个通知,所以我使用的是onBackpressureBuffer,只在Snackbar被解除时才请求下一个项目。这很好用,但如果缓冲区溢出,我希望有一个冷静期,这样我们就不会有一个持续的通知流。换句话说,当缓冲区溢出时,跳过新的发射一段时间。

到目前为止,我有类似的东西

observable
    .onBackpressureBuffer(
        bufferSize,
        () -> { /* start cool-off time here */ },
        BackpressureOverflow.ON_OVERFLOW_DROP_LATEST)
    .subscribe(new Subscriber() {
        void onStart() {
            request(1);
        }

        void onNext(item) {
            snackBar = createSnackbar(item);
            snackBar.setCallback((sb, event) -> { request(1) }
            snackbar.show();
        }
    });

在OperatorOnBackpressureBuffer的onOverflow操作中,我想以某种方式开始冷静期。

似乎我想要一些背压缓冲区和throttleWithTimeout或跳过的组合。我希望我可以通过一个新的BackpressureOverflow.Strategy实现这一目标,但这似乎没有提供太大的灵活性。有没有一种简单的方法可以按我想要的方式组合这些?

谢谢!

0 个答案:

没有答案