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
.