1.为什么要防止用户重复点击
在用户使用App的时候,并不会乖乖的按照我们的想法而执行。
下面就拿我们熟悉的Button来:
假设这个Button的点击事件是“一个登录的网络请求”,这时候我们的主角-老司机小明登场了,他娴熟的输入了自己的账号和密码,然后点击了登录,静静地等候着APP的反馈跳转,可是天有不测风云,这时候网络不是很好,APP一直还未反馈 。我们的老司机也是一个暴脾气,抓着APP的那个小Button一顿乱点。欺负完Button以后,网络好了,然后无数个网络请求被发出去了,瞬间爆炸(当然你也可以优化网络请求,这里只是举个类似的例子)。
2.如何防止重复点击
方法1.屏蔽Button的点击事件
步骤一:在Button的点击事件里面
btn.setClickable(false);//设置button不可以点击
步骤二:在网络请求完成的时候(请求获得数据或者请求失败,请求取消等操作)
btn.setClickable(true);//设置button可以点击
方法2.添加标志位判断是否执行Button内的标志位
原理:每次点击button的时候,获取当前的时间,然后对比上一次的时间,两者的差值如果小于某个规定的时间,则判断为快速点击。
/** * 判断用户是否快速点击多次 */ private static long lastClickTime = 0; private static final long SPACE_TIME = 1000;//时间间隔 public static boolean isFastClick() { //当前系统时间 long currentTime = System.currentTimeMillis(); boolean isAllowClick;//是否允许点击 if (currentTime - lastClickTime > SPACE_TIME) { isAllowClick = false; } else { isAllowClick = true; } lastClickTime = currentTime; return isAllowClick; }