时间:2021-05-20
最近开发过过成中遇到一些小问题,比如一个btn点击用户可能只点击了一次但是后台响应了多次,像一些表单的提交出现这种问题比较棘手,当然解决这种问题的方案比较多:比如自定义单次点击的btn,或者在点击的时候将按钮设置为不可点击,或者做一个计时器等等,这些都是解决的方案,至于具体怎么使用,这就要看程序员的编码风格了,首先来看看具体问题:
onClick事件是Android开发中最常见的事件。比如,一个Button,功能是点击会提交一个订单,则一般代码如下 :
正常情况下这段代码是没什么问题的,但是Android设备的机型性能等千差万别,如果碰到比较卡的手机,则有可能出现submitOrder()函数跳转页面出现延迟的现象。碰到这种现象,则用户就很有可能再次点击一次,从而造成函数被调用两次,出现重复订单的BUG。 一般地,碰到这现象,首先就会想到的就是在点击之后把submitButton设置为不可点击:
此方法也确实有效,不过如果submitOrder()方法没有成功,需要再次提交订单时又需要再重复把submitButton设置为可点击状态。如果类似的button比较多时,就显得比较麻烦、混乱。
下面介绍一下我的处理方法:
自定义一个CheckDoubleClickListener,继承自OnClickListener,其中的OnCheckDoubleClick是自定义的一个接口,具体看代码:
CheckDoubleClickListener.Java
OnCheckDoubleClick.java
使用方法:
给btn设置点击事件时用CheckDoubleClickListener代替OnClickListener,并且实现方法onCheckDoubleClick代替onClick即可,像这样:
原理:
就是用onCheckDoubleClick代替onClick处理具体的操作,在onClick方法中加一个判断:在接收到点击事件之后,先判断一下时间,如果距离上次处理操作不足MIN_CLICK_DELAY_TIME,就忽视——即能防止误操作的连续点击导致重复事件。MIN_CLICK_DELAY_TIME可调。
优势:
好处是不用改变原有代码的逻辑,就只需要两个替换:CheckDoubleClickListener代替OnClickListener,onCheckDoubleClick代替onClick。 代码的结构等都不需要做改变,不需要关心处理更改btn的状态这些额外判断逻辑,只需要关注业务逻辑即可,代码是不是变得很简洁了呢?一起加油吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
iOS防止按钮多次点击造成多次响应的方法在日常开发中经常会碰到一种bug就是因为用户快速点击某个按钮,导致页面重复push或者重复发送网络请求。这样的问题既对用
Android中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法问题描述:开发中发现,SwipeRefreshLayout的下拉刷新
问题描述恐怕大家都会遇到这样的问题,一个点击事件多次触发,导致,同样的内容提交了多次,或者说弹出多个页面...onClick事件是Android开发中最常见的事
后厨打印机打不出单子的解决方法有: 1、首先应检查打印机的线路连接,保证线路通畅,以防止网线松动造成的打印故障,然后在前台系统的提示中,点击重试。 2、若上
案例分析:比如执行懒加载时候,onscroll事件触发多次事件时候会调用多次ajax回调事件,由于每个事件返回先后次序并不能保证和触发前一致,所以在数据响应返回