Debounce使PublishSubject仅发射一项

问题描述 投票:0回答:1
protected PublishSubject<Integer> onScrollS = PublishSubject.create();

public void onActivityCreated(...) {

        ...

        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NotNull RecyclerView recyclerView, int dx, int dy) {
                if (dy == 0) return;
                Log.i("Rx", "onNext(" + dy + ")");
                onScrollS.onNext(dy);
            }
        });
        disposable = onScrollS
                .debounce(200, TimeUnit.MILLISECONDS) // <-- this breaks everything
                .subscribe(this);
    }

    // the Fragment implements Consumer interface
    @Override
    public void accept(Integer integer) throws Exception {
        Log.i("Rx", "Accept: " + integer);
        recyclerViewOnScrolled();
    }

当我向onScrollS主题添加.debounce呼叫时accept方法仅被调用一次。

我可以滚动并滚动然后暂停十秒钟,什么也没有发生。

任何人都知道为什么吗?

我尝试过这样的事情:

.debounce((Function<Integer, Observable<Integer>>) value - > {
    return Observable.just(value).delay(1, TimeUnit.SECONDS);
})

如果删除编辑部分,它也可以使用。

android fragment rx-java2 debounce publishsubject
1个回答
0
投票

这里可能有一些问题:

© www.soinside.com 2019 - 2024. All rights reserved.