点我查看另一种防抖方法
1、添加插件库
build.gradle(project):
dependencies {
...
// AOP 配置插件:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'
}
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
build.gradle(module):
在app的build.gradle中的最上面添加
apply plugin: 'android-aspectjx'
dependencies {
...
// AOP 插件库:https://mvnrepository.com/artifact/org.aspectj/aspectjrt
implementation 'org.aspectj:aspectjrt:1.9.5'
}
2、自定义注解类
import com.blankj.utilcode.util.ToastUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class ClickFilterHook {
private static Long sLastClick = 0L;
private static final Long FILTER_TIME = 500L;
@Around("execution(* android.view.View.OnClickListener.onClick(..))")
public void clickFilterHook(ProceedingJoinPoint joinPoint) {
long now = System.currentTimeMillis();
if (now - sLastClick >= FILTER_TIME) {
sLastClick = now;
try {
joinPoint.proceed();
} catch (Throwable throwable) {
throwable.printStackTrace();
}
} else {
ToastUtils.showShort("点太快了");
}
}
}
3、配置完后直接调用原生的点击事件就好了
tv_more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
如果你遇到:java.util.zip.ZipException: zip file is empty 这个报错
请看这篇文章:记录一个坑:java.util.zip.ZipException: zip file is empty_OnListener的博客-CSDN博客_java.util.zip.zipexception: