Android app 防止用户短时间内多次点击

日常开发中,app必须处理好用户连续点击的问题,因为短时间内的多次重复点击,不管是网络请求或者提交数据,都会重复,网络请求中虽然也可以设置过滤重复的提交,但当你点击一个按钮打开一个Activity,你就会打开多个了,设置Activity的启动模式是没有用处的。如果你还记得android的事件分发机制,你就发现出来很简单了。

1 android事件分发 借用网络上的一张图,可以发现事件分发是有个U型走势,无论什么事件,都是从Activity的dispatchTouchEvent()分发的,需要注意事件分发的返回值,false也会被消费的

/*
    * 防止短时间内多处点击
    * */
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN){
            if (isClick()){
                return super.dispatchTouchEvent(ev);
            }else {
                return true;
            }
        }

        return super.dispatchTouchEvent(ev);
    }

/**
     * 点击1秒内不能连续点击
     */
    public boolean isClick() {
        if ((System.currentTimeMillis() - exitTime) > EXITTIME) {
            exitTime = System.currentTimeMillis();
            return true;
        } else {
            return false;
        }
    }

总结:在你项目的BaseActivity中,重写dispatchTouchEvent,如果为down事件,就判断当前点击时间和上次点击的时间,我设置的是500ms,重点是如果点击事件是可以分发的,需要返回super

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plx_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值