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

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

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();
            }
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5703648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存