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);
})
如果删除编辑部分,它也可以使用。
这里可能有一些问题: