多语言展示
当前在线:122今日阅读:23今日分享:25

Android防止过快点击造成多次事件

我们开发人员在再编写程序的过程中会和用户使用的角度和业务处理相结合来编写程序代码。在一些重要的操作,比如提交数据或者提交订单的按钮时这时候需要请求网络处理的逻辑比较多,当网络条件不好的情况下,请求数据会比较慢,这时候为了防止用户重复操作通常会有两种办法防止。第一种就是加载一个Dialog第二种就是控制按钮在一定时间内防止多次点击。第一种办法比较简单,这里不做过多说明,下面主要说明一下第二种防止按钮重复点击是怎么实现的。
工具/原料

集成Android SDK插件的Eclipse 或者 AndroidStudio

方法/步骤
1

问题:OnClickListener是Android开发中最用的点击事件。点击按钮之后进入提交方法。

2

正常情况下上面这段代码没有什么问题。但是如果网络加载有延迟或者Android手机设备性能不是很好的话可能会出现延迟情况。当这种情况出现时没有任何提示的话用户并不知道。所以用户极有可能会再次点击提交按钮。这时候就会造成重复点击事件。也就是说deliveryMethod()方法会调用两次。为了防止这种情况出现,一般会想到在点击之后会把btn设置为不可点击。如下图:

3

这种方法的确很有效,但是deliveryMethod()方法如果没有提交成功的话,需要再次走提交方法时又需要再把btn设置为可以点击的状态。如果类似的按钮比较多时,就比较凌乱并且造成维护时不好维护。

4

方案 :出现这种情况应该怎么做,咱们具体分析一下。当需要这种操作时,可以定义一个方法,继承OnClickListener,并且在继承的OnClickListener的方法中定义两个变量。具体实现方法如下图:

5

当要使用提交方法时给btn设置点击事件用forbidClickListener代替OnClickListener,并实现方法forbidClick代替onClick方法。如下图:

6

到现在就已经把关键代码写完了。这里说明一点,MIN_CLICK_TIME 这个变量是可以调整的。根据具体需要可以调整到合适。

7

为什么要这么做其实文章开头就已经解释过了。重复操作时把按钮设为点击不可点击一是工作量大二是看起来比较混乱不易维护,通过这样操作代码原来的逻辑并没有改变,不需要关心按钮的状态,只需要关注你自己的业务就可以。更利于后来人的阅读和维护。

注意事项

此方法并不是唯一的,如果你有更好的方法请提出合理的建议。

推荐信息