android - rxbinding防抖动无效什么原因

【字号: 日期:2022-11-20浏览:21作者:雯心

问题描述

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'); }});

问题解答

回答1:

throttleFirst

回答2:

时间单位错误, 1000微秒=1毫秒=0.001秒这个时间根本起不到防抖动效果本意应该是1000毫秒,也就是1秒吧单位换算如下

TimeUnit{ NANOSECONDS,// 纳秒=0.000000001秒 MICROSECONDS,//微妙=0.000001秒 MILLISECONDS,//毫秒=0.001秒 SECONDS,//秒 MINUTES,//分钟 HOURS,//小时 DAYS//天}

另外,throttleFirst()与throttleLast()都可以起到防抖效果效果略有差别throttleFirst()连续点击时只取第一次,后续点击忽略掉throttleLast()连续点击时只取最后一次,前面的点击忽略掉

相关文章: