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();
}
当我.debounce
向我的 onScrollS 主题添加调用时,该accept
方法仅被调用一次。
我可以滚动并滚动然后暂停十秒钟,没有任何反应。
有人知道为什么吗?
我试过这样的事情:
.debounce((Function<Integer, Observable<Integer>>) value - > {
return Observable.just(value).delay(1, TimeUnit.SECONDS);
})
如果我移除delay
零件,它会起作用。