zoukankan      html  css  js  c++  java
  • AOP集成防止连续多次点击问题

    AOP即Aspect Oriented Programming的缩写,习惯称为切面编程;与OOP(面向对象编程)万物模块化的思想不同,AOP则是将涉及到众多模块的某一类问题进行统一管理,AOP的优点是将业务逻辑与系统化功能高度解耦,让我们在开发过程中可以只专注于业务逻辑,其他一些系统化功能(如路由、日志、权限控制、拦截器、埋点、事
    件防抖等)则由AOP统一处理;
     
    集成
    //root gradle
     dependencies {
            classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.1'
            }
    
    //app或module gradle
    apply plugin: 'android-aspectjx'    //插件
    
    compile 'org.aspectj:aspectjrt:1.8.9'   //jar

    代码

    public class NoDoubleClickUtils {
    
        private final static int SPACE_TIME = 500;//2次点击的间隔时间,单位ms
        private static long lastClickTime;
    
        public synchronized static boolean isDoubleClick() {
            long currentTime = System.currentTimeMillis();
            boolean isClick;
            if (currentTime - lastClickTime > SPACE_TIME) {
                isClick = false;
            } else {
                isClick = true;
            }
            lastClickTime = currentTime;
            return isClick;
        }
    }
    
    @Aspect
    public class AspectTest {
        final String TAG = AspectTest.class.getSimpleName();
    
        @Around("execution(* android.view.View.OnClickListener.onClick(..))")
        public void onClickLitener(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
            Log.e(TAG, "OnClick");
            if (!NoDoubleClickUtils.isDoubleClick()) {
                proceedingJoinPoint.proceed();
            }
        }
    }
    这样就能hook到所有onClick多次重复点击的问题了,有效防止连续点击
    (非原创,只为记录问题,以供以后查看)
     
  • 相关阅读:
    oracle分区表总结
    Oracle AMDU用法
    sql_patch用法
    oracle resource_managed限制个人用户使用并行
    oracle 服务的故障转移测试
    RAC修改public ip,vip,priv_ip,sacn_ip
    oracle tfactl使用 TFA
    oracle dbms_metadata.get_ddl使用总结
    Oracle分析函数总结
    继承与接口的区别
  • 原文地址:https://www.cnblogs.com/fengfenghuifei/p/11224832.html
Copyright © 2011-2022 走看看