美文网首页
aop singleClick 双击去重

aop singleClick 双击去重

作者: 陈桐Caliburn | 来源:发表于2020-01-09 17:04 被阅读0次

    使用方法

    引用依赖

    apply plugin: 'android-aspectjx'
    
    aspectjx {
        enabled true
    }
    
    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
    

    使用范例

    //从此就有去重功能
    @ SingleClick
    void testClick(){
    
    }
    
    

    代码示例

    • SingleClick注解
    /**
     * 防止View被连续点击
     */
    @Retention(RetentionPolicy.CLASS)
    @Target(ElementType.METHOD)
    public @interface SingleClick {
    }
    
    • SingleClickAspect
    /**
     * 防止View被连续点击,间隔时间600ms
     *
     * @author chentong
     * @date 18/3/29
     */
    @Aspect
    public class SingleClickAspect {
        private static long lastClickTime;
       @Pointcut("execution(@com.xxx.app.aop.annotation.aspect.SingleClick * *(..))")
        //方法切入点
        public void methodAnnotated() {
        }
    
        @Around("methodAnnotated()")//在连接点进行方法替换
        public void aroundJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable {
            if (!isFastDoubleClick()) {
                joinPoint.proceed();//执行原方法
            }
        }
    
        public  boolean isFastDoubleClick() {
            long time = System.currentTimeMillis();
            long timeD = time - lastClickTime;
            if (0 < timeD && timeD < 600) {
                return true;
            }
            lastClickTime = time;
            return false;
        }
    
    }
    

    相关文章

      网友评论

          本文标题:aop singleClick 双击去重

          本文链接:https://www.haomeiwen.com/subject/jzayactx.html