RxView.clicks(activityNewsButton)
.throttleLast(1000,TimeUnit.MICROSECONDS)
.subscribe(new Action1<Void>() {
@Override
public void call(Void aVoid) {
System.out.println("click");
}
});
经过调试,这样子还是会输出很多个click,好像并没有成功防抖动,为什么
还有compoundbutton也不能实现这个功能
RxCompoundButton.checkedChanges(schoolBusSwitchButton)
.throttleLast(1000, TimeUnit.MICROSECONDS)
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean aBoolean) {
System.out.println("switch");
}
});
スロットルファースト
時間単位が間違っています。1000 マイクロ秒 = 1 ミリ秒 = 0.001 秒
リーリーこの時間には手ぶれ補正効果がまったくありません
本来の意図は 1000 ミリ秒、つまり 1 秒であるはずです
単位変換は以下の通りです
さらに、
throttleFirst() と throttleLast() はどちらも手ぶれ補正効果を実現できます
効果は若干異なります
throttleFirst() は、連続クリックした場合にのみ実行され、その後のクリックは無視されました
throttleLast() は、継続的にクリックした場合に最後のクリックのみを受け取り、前のクリックは無視します