検索

ホームページ  >  に質問  >  本文

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日前742

全員に返信(2)返信します

  • 巴扎黑

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

    スロットルファースト

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:53:22

    時間単位が間違っています。1000 マイクロ秒 = 1 ミリ秒 = 0.001 秒
    この時間には手ぶれ補正効果がまったくありません
    本来の意図は 1000 ミリ秒、つまり 1 秒であるはずです
    単位変換は以下の通りです

    リーリー

    さらに、
    throttleFirst() と throttleLast() はどちらも手ぶれ補正効果を実現できます
    効果は若干異なります
    throttleFirst() は、連続クリックした場合にのみ実行され、その後のクリックは無視されました
    throttleLast() は、継続的にクリックした場合に最後のクリックのみを受け取り、前のクリックは無視します

    返事
    0
  • キャンセル返事