栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android利用AOP来防止view多次点击事件触发

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android利用AOP来防止view多次点击事件触发

利用AOP来防止view多次点击事件触发 (支持butterknife的onClick、view.setonClickListener()等)老项目慎用,适应新建项目 参考:https://www.jianshu.com/p/e152b34b785b 1、app.build
//在dependencies中
implementation 'org.aspectj:aspectjrt:1.9.5'
//androidstudio4.0以上需加(与dependencies平齐的位置)
aspectjx {
    enabled true
    exclude 'com.google','com.taobao','com.alipay'(过滤需要的第三方,支付宝等;具体用法见https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx)
}
2、project.build
dependencies {
        //建议3.6.1以上
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'
    }

3、新建ClickFilterHook的Java文件(自动捕捉的)
@Aspect
public class ClickFilterHook {
    private static Long sLastclick = 0L;
    //因为会影响所有的点击事件,设置0.3s左右不影响
    private static final Long FILTER_TIMEM = 300L;

    @Around("execution(* android.view.View.OnClickListener.onClick(..))")
    public void clickFilterHook(ProceedingJoinPoint joinPoint) {
        if (System.currentTimeMillis() - sLastclick >= FILTER_TIMEM) {
            sLastclick = System.currentTimeMillis();
            try {
                joinPoint.proceed();
            } catch (Throwable throwable) {
                throwable.printStackTrace();
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705083.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号