android - RxJava 仅在发射器停止时发射

标签 android rx-java2

在 Android 应用程序中,我只想在用户停止选择列表中的项目列表后才刷新列表。因此,实际上,我希望只有在生产者停止发射至少 500 毫秒后才能通知观察者。

现在我有类似以下内容:

Subject<Object> _bus = PublishSubject.create().toSerialized();

...
_bus.onNext(new Event());
...

_bus.delay(500, TimeUnit.MILLISECONDS)
    .distinctUntilChanged()
    .observeOn(Schedulers.computation())
    .subscribe(event -> {
      // Do something with event
    }));

这很好,但即使源仍在发射,它也会以 500 毫秒的间隔发射。我想等待 500 毫秒,看看源是否已停止调用 onNext(),然后才发出。

这可能吗?

最佳答案

所以基本上你需要使用缓冲区去抖。有article这应该对你有帮助。

并从该文章开始示例:

Observable<Object> tapEventEmitter = _rxBus.toObserverable().share();
    Observable<Object> debouncedEventEmitter = tapEventEmitter.debounce(1, TimeUnit.SECONDS);
    Observable<List<Object>> debouncedBufferEmitter = tapEventEmitter.buffer(debouncedEventEmitter);

    debouncedBufferEmitter.buffer(debouncedEventEmitter)
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Action1<List<Object>>() {
          @Override
          public void call(List<Object> taps) {
            _showTapCount(taps.size());
          }
        });

关于android - RxJava 仅在发射器停止时发射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894761/

相关文章:

Android 主屏幕小部件 : RemoteViews setRemoteAdapter(. ..) 方法不适用于 API 11+

android - 如何在 android 谷歌地图 v2 上的标记上方添加文本?

android - 我想获得android中两个地理点之间的距离

android - 何时在 rxjava 中使用 `unSubscribeOn`

java - 使用改造和 RXJava 2 的多个 API 调用

android - 使用 Retrofit2 和 rxJava2 处理没有主体的响应

Android设置按钮宽度为屏幕的一半

Android 架构组件 : Using Enums

rx-java2 - 了解可流动的背压rxjava2

java - 忽略 Observable<Single<T>> 中的错误