android - rxbinding防抖动无效什么原因
PHP中文网
PHP中文网 2017-04-17 17:51:22
0
2
717
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中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
巴扎黑

油门第一

Ty80

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板