一、开发背景
点击按钮的时候,如果用户点击速度过快。如点击按钮进行跳转的时候,点击速度快的情况下,我们会发现会新建两个甚至三个新的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的点击事件,则需要寻到子控件下面的点击事件之前。也就是说,不管怎样,都需要放在点击事件响应逻辑的前一行。