关于避免按钮短时间内频繁点击或过快点击的处理方法

来源:互联网 发布:javascript 子元素 编辑:程序博客网 时间:2024/05/18 01:12

开发过程中,遇到了测试提出的bug,原因是做网络请求,生成一条数据的时候,网络响应慢,点击提交按钮没反应,多次点击,导致生成多条数据,数据出现问题。

出现问题,第一反应就是,一旦点击了网络请求按钮,就要设置它为不可点击,等请求回调,无论成功还是失败,再次设置为可点击。

部分代码:


requestNetData();

mBtLoading.setClickable(false);

@Overridepublic void onError(Call call, Exception e, int id) {    mBtLoading.setClickable(true);    Toaster.showToast(GetParkDataActivity.this, "数据保存失败");    return;}@Overridepublic void onResponse(String response, int id) {    mBtLoading.setClickable(true);
}

但是这样也会存在问题,我们都知道JAVA代码是按顺序执行的,如果当前手机网络不好,这个地方还是会出现多次点击事件,无法禁止快速的重复点击事件,

所以,有必要做一个点击时间间隔处理,和双击返回的原理一样。然后我写了以下代码:

public class ClickUtils {    private static long lastTime;    private static long curTime;    private static Toast mToast;    public static boolean mClick() {        if (System.currentTimeMillis() - lastTime >= 5000) {            curTime = System.currentTimeMillis();            lastTime = System.currentTimeMillis();            return true;        }        return false;    }
}


在这里我写了一个点击类,用的时候直接加判断就好了:

    @OnClick(R.id.test)    public void onClick() {        if (ClickUtils.mClick()) {
// 下面是个吐司,我只是抽了一下  第一次点击到5s之后的点击响应这个事件            ClickUtils.mToaster(this, "111");        } else {
// 第一次点击之后 接下来的5s内 走这里            ClickUtils.mToaster(this, "222");        }    }

这样可以在业务代码里进行判断了,可以设置是否可点击,多少时间内可点击。


技术小白,开发探索中...如有什么不足,还请指正。

阅读全文
0 0