Android 防抖动,防止重复点击

1.概况:

  在app 使用中经常遇到界面中按钮 点击时 连续点击两次或者多次,导致按钮下逻辑功能重复执行,造成资源浪费甚至程序出错,为了尽量避免这种情况出现,提出防抖动方法。

2.实现思路

<1.  主要思路为 通过两次点击的时间差,来对比是否在最短时间内,来判断点击是否有效。

<2. 不同view 通过对比当前点击View 的id 判断是否是同一个view,如果是同一个view 进行防抖动校验,如果不是同一个view,重置当前校验。

3.代码实现



public class NoDoubleClickUtil {

    public static int mId = -1;

    private static long mFirstClickTime;//记录首次点击时间

    public static boolean checkDoubleClick(int id) {

        long clickTime = System.currentTimeMillis();//记录当前点击时间

        if (mId == -1 || mId != id) {//不同view,重置

            mId = id;

            mFirstClickTime = clickTime;

            return true;

}

        if (clickTime - mFirstClickTime > Constant.NO_DOUBLE_CLICK_TIME) {

        //判断当前时间差是否大于校验时长,如果大于 判断为此次不是无效点击

            mFirstClickTime = clickTime;

            return true;

        } else {

            return false;

}

}

}



4.代码中使用



@OnClick({R.id.tv_text1, R.id.tv_text2})

public void onViewClicked(View view) {

    if (!NoDoubleClickUtil.checkDoubleClick(view.getId())) {//判断如果是错误点击,直接返回,不执行操作

        return;

}

    switch (view.getId()) {

        case R.id.tv_text1:

            ToastUtils.showShortToast(MyApplication.mContext, "点击1:" + System.nanoTime());

            break;

        case R.id.tv_text2:

            ToastUtils.showShortToast(MyApplication.mContext, "点击2:" + System.nanoTime());

            break;

}

}



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。