安卓 一个注解实现防抖

news/2025/2/7 9:18:15/

1、添加插件库

build.gradle(project):

    dependencies {...// AOP 配置插件:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjxclasspath '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/aspectjrtimplementation '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() {@Overridepublic 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:


http://www.ppmy.cn/news/826765.html

相关文章

Android 功能防抖

功能防抖 理解的意思是防止短时间内多次点击或者输入导致的重复请求。 常见情景 1.Activity跳转,我们一般用Button写onClick监听然后跳转,如果你的目标Activity的启动模式为默认,会出现多次创建目标activity问题。 2.单控件多次点击请求网络…

Imx6ull linux 设备树

一 linux设备树简介 1.1 linux设备树 Linux设备树是一种用于描述硬件设备信息的数据结构,它在Linux内核中发挥着越来越重要的作用 在系统上电后,BootLoader会将设备树传递给Linux内核,内核根据识别的树信息展开为platform_device、spi_dev…

Nerf论文阅读笔记Neuralangelo: High-Fidelity Neural Surface Reconstruction

Neuralangelo:高保真神经表面重建 公众号:AI知识物语;B站暂定;知乎同名 视频入门介绍可以参考 B站——CVPR 2023最新工作!Neuralangelo:高保真Nerf表面重建 https://www.bilibili.com/video/BV1Ju411W7…

禁用Enter键,右键,复制粘贴

//禁用Enter键 document.onkeydown function (e) { //捕捉回车事件 let ev (typeof event ! undefined) ? window.event : e; if (ev.keyCode 13 || event.which 13) { return false; } } <body>标签中加入οncοntextmenu”return false” onselectstart”retur…

电脑连续复制粘贴,随意复制,随意粘贴,需要打开剪贴板功能。

电脑连续复制粘贴&#xff0c;随意粘贴&#xff0c;需要打开剪贴板功能。 以win10为例&#xff0c;连续复制粘贴步骤如下所示&#xff1a; 1、在电脑桌面点击windows图标。 2、点击齿轮状图标&#xff0c;进入设置。 3、在windows设置中&#xff0c;点击系统。 4、选择剪贴板…

Go语言网络编程:HTTP服务端之底层原理与源码分析——http.HandleFunc()、http.ListenAndServe()

一、启动 http 服务 import ("net/http" ) func main() {http.HandleFunc("/ping", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("ping...ping..."))})http.ListenAndServe(":8999", nil) }在 Golang只需要几行代…

移动端、PC端如何实现点击按钮复制指定内容区域到粘贴板

首先说到这个东西&#xff1a;应该目前存在两类人&#xff0c;一是自力更生型&#xff0c;另一种则是巧学妙用性。 说的难听点就是&#xff1a;自己原生代码死扣的和引入他人插件的 【概念分析】那么我就说一下重点吧&#xff1a;针对移动端&#xff0c;它区别于PC端不只是屏幕…

JQ和JS实现点击后复制到剪切板

JQ和JS实现点击后复制到剪切板 ps&#xff1a;本人亲测&#xff0c;阿里云2核4G5M的服务器性价比很高&#xff0c;新用户一块多一天&#xff0c;老用户三块多一天&#xff0c;最高可以买三年&#xff0c;感兴趣的可以戳一下&#xff1a;阿里云折扣服务器 注意&#xff1a;1、…