android限制点击事件,防止Android Button点击过快造成多次事件响应的方法

onClick()事件是Android中常见的回调事件,一般正常情况下在很短的时间内只会点击一次Button,但如果用户手机比较卡顿,短时间内多次点击按钮可能多次事件响应,从而出现一些问题。例如:多次点击导致的多次网络请求,多次点击导致打开同一个actvity,多次点击跳转webView导致session丢失问题,等等。通过以下方法处理:

方法一:通过简单的回调功能处理。

1、自定义一个NoDoubleClickListener,继承自OnClickListener:

public abstract class NoDoubleClickListener implements View.OnClickListener {

public static final int MIN_CLICK_DELAY_TIME = 1000;

private long lastClickTime = 0;

@Override

public void onClick(View v) {

long currentTime = Calendar.getInstance().getTimeInMillis();

if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {

lastClickTime = currentTime;

onNoDoubleClick(v);

}

}

protected abstract void onNoDoubleClick(View v);

}

2、在设置点击事件时用将方法OnClickListener替换为NoDoubleClickListener,并且实现方法onNoDoubleClick替换onClick即可:

buttonPay.setOnClickListener(new NoDoubleClickListener() {

@Override

protected void onNoDoubleClick(View v) {

//执行点击事件

}

});

方法二:使用RxJava的throttleFirst操作符,通过简洁的链式调用来解决按钮被多次点击的问题。

b331fce8822abedaa49b3f3654909dcf.png

RxView.clicks(buttonPay)

.throttleFirst(1, TimeUnit.SECONDS)

.subscribe(new Observer() {

@Override

public void onCompleted() {

//

}

@Override

public void onError(Throwable e) {

//

}

@Override

public void onNext(Object o) {

//

}

});

更多参考资料:

http://blog.csdn.net/zhyxuexijava/article/details/51597230

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值