RxJava的防抖操作(防止重复点击操作)throttleFirst

参考地址: https://blog.csdn.net/cn_1937/article/details/79001050

传统的防止按钮被重复点击的方法
一般来说,我们定义一个变量,保存按钮上次被点击的时间,当按钮被点击时,先获取系统时间,再与上次点击的时间作比较,如果符合再次被点击的条件,则继续

private long currentTim = 0;
    public void click(View view){
        long systemTime = SystemClock.currentThreadTimeMillis();

        if(systemTime - currentTim > 500){
            // 与上次点击时间超过500毫秒,则按钮可以点击
            // TODO 作按钮点击后的操作
        } else {
           // 与上次点击的时间少于500毫秒,则按钮不能被点击
        }

        currentTim = systemTime;
    }

Rxjava2方式完成防止按钮被重复点击的操作

1.需要结合RxBinding的使用

compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

2.在布局文件中创建一个按钮
3.然后通过Rxbinding绑定这个控件。注册起点击事件

RxView.clicks(mButton)

 mButton = (Button) findViewById(R.id.button);

        // 创建观察者
        Observer observer = new Observer() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Object value) {
                Log.d("ClickActivity","点击了按钮");
            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        };

        // 绑定按钮的点击事件,并绑定观察者与被观察者
        RxView.clicks(mButton).throttleFirst(1, TimeUnit.SECONDS)
             .subscribe(observer);

用throttleFirst来使得按钮每间隔1秒才会再次响应其点击事件

// 设置间隔1秒才能发送下一个事件
throttleFirst(1, TimeUnit.SECONDS)

你可能感兴趣的:(RxJava的防抖操作(防止重复点击操作)throttleFirst)