APP防止点击事件多次执行
逻辑
package com.jiayue.pay.view.util;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/**
* ================================================
* Description:
* <p>
* Created by
* <p>
* 页面内容介绍:
* <p>
* ================================================
*/
public class AntiShake {
private static List<OneClickUtil> utils = new ArrayList<>();
public static boolean check(Object o) {
String flag = null;
if (o == null)
flag = Thread.currentThread().getStackTrace()[2].getMethodName();
else
flag = o.toString();
for (OneClickUtil util : utils) {
if (util.getMethodName().equals(flag)) {
return util.check();
}
}
OneClickUtil clickUtil = new OneClickUtil(flag);
utils.add(clickUtil);
return clickUtil.check();
}
public boolean check() {
return check(null);
}
public static class OneClickUtil {
private String methodName;
public static final int MIN_CLICK_DELAY_TIME = 1000;
private long lastClickTime = 0;
public OneClickUtil(String methodName) {
this.methodName = methodName;
}
public String getMethodName() {
return methodName;
}
public boolean check() {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
return false;
} else {
return true;
}
}
}
}
调用
//防止重复点击
if (AntiShake.check(view.getId())) return;
```‘’
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201019083537940.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NjI0MjM3,size_16,color_FFFFFF,t_70#pic_center)