一、开发背景
点击按钮的时候,如果用户点击速度过快。如点击按钮进行跳转的时候,点击速度快的情况下,我们会发现会新建两个甚至三个新的Activity;或者我们在请求数据的时候,会发现会出现请求了多次的情况。
二、事件分析
当我们点击某View控件的时候,view控件回调相应事件。响应事件的时间和在相应时间之前出现的一些相应数据请求,致使View控件不能立马响应。导致无法立刻执行。当我们再次点击的时候会多响应一次。这样就出现了点击时间多次触发的情况。那么要怎么处理呢,我们需要做的就是根据点击两次按钮的时间差进行时间拦截。
三、代码
/** * Created by Laizhen on 2017/6/27. * 点击频繁的事件处理 */ public class ButtonUtils { //后一次点击事件 public static long lastClickTime; //判定是否点击太频繁,返回boolan值 public static boolean isFastDoubleClick() { //记录前一次的系统时间 long time = System.currentTimeMillis(); //后一次点击事件的时间 long timeD = time - lastClickTime; //进行判断,如果是在3秒以内,则返回true,意思是不让其点击事件响应 if ( 0 < timeD && timeD < 3000) { return true; } //更新时间 lastClickTime = time; //执行 return false; } } //点击事件拦截:需要在点击当前时间内进行判断,不然无效 if (ButtonUtils.isFastDoubleClick()) { return; }很简单,我们在需要的地方在执行事件之前加上即可。
注意:在处理点击事件的时候,如果你是需要处理子View的点击事件,则需要寻到子控件下面的点击事件之前。也就是说,不管怎样,都需要放在点击事件响应逻辑的前一行。