搜尋

首頁  >  問答  >  主體

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

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中文网2813 天前743

全部回覆(2)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 17:53:22

    油門第一

    回覆
    0
  • PHP中文网

    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()連續點擊時只取最後一次,前面的點擊忽略掉

    回覆
    0
  • 取消回覆