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");
}
});
PHP中文网2017-04-17 17:53:22
時間單位錯誤, 1000微秒=1毫秒=0.001秒
這個時間根本起不到防抖動效果
本意應該是1000毫秒,也就是1秒吧
單位換算如下
TimeUnit{
NANOSECONDS,// 纳秒=0.000000001秒
MICROSECONDS,//微妙=0.000001秒
MILLISECONDS,//毫秒=0.001秒
SECONDS,//秒
MINUTES,//分钟
HOURS,//小时
DAYS//天
}
另外,
throttleFirst()與throttleLast()都可以起到防抖效果
效果略有差別
throttleFirst()連續點擊時只取第一次,後續點擊忽略掉
throttleLast()連續點擊時只取最後一次,前面的點擊忽略掉