为了避免例如用户对按钮多次点击,造成多次网络请求的现象。我们需要对按钮做防抖处理,即在指定时间内只响应一次点击事件。例如在短信验证登录时,多次点击就会发送多条短信,很影响体验,并且容易填错验证码。
这里选择使用的是RxBinding库,更简洁更容易理解,更适合我这样的新手。
首先我们需要导入依赖:
compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
activity中的实现代码:
RxView.clicks(button1)
.throttleFirst(3000,TimeUnit.MILLISECONDS)
subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Log.i("RxView","点击了button1");
}
});
xml中的代码只有一个Button控件:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮1"
android:id="@+id/button1"/>
可以看到,无论我们怎么点击,都只会响应3秒内的第一次点击事件。
这里只展示了单个按钮,也可使用ButterKnife实现多个按钮防抖,相对简单这里就不展示了。