美文网首页
性能优化,还得看AspectJ

性能优化,还得看AspectJ

作者: better_huo | 来源:发表于2019-09-27 10:21 被阅读0次

    https://mp.weixin.qq.com/s/heBoKE2UqMgp4_zm_fciuA

    笔记:


    image.png

    APT应用:Dagger,butterKnife,组件化方案等等,应用在编写代码过程中;
    AspectJ:主要用于性能监控,日志埋点等,应用在一些第三方sdk中,因为该sdk已经做好了,代码层面已经不能动了;

    @Before("execution(* com.hujiang.library.demo.DemoActivity.test(..))"),在执行com.hujiang.library.demo.DemoActivity.test方法之前进行该方法的织入;

    image.png
    代码织入的原理:生成一个Pointcut对象?

    // 调用test()方法的时候,该注解的方法没有参数
    @Pointcut("call(* com.hujiang.library.aspect.MainActivity.test(..))")
    public void invoke() {
    }

    // 同时满足前面的条件,即在test2()方法内调用test()方法的时候才切入
    @Pointcut("invoke() && invoke2()")
    public void invokeOnlyIn2() {
    }

    //该注解的方法有参数
    @Before("invokeOnlyIn2()")
    public void beforeInvokeOnlyIn2(JoinPoint joinPoint) {
    String key = joinPoint.getSignature().toString();
    Log.d(TAG, "beforeInvokeOnlyIn2: " + key);
    }

    当一个Pointcut作为其它Pointcut的限制条件的时候,该Pointcut使用@Pointcut注解?

    实现登录检查的操作。类似的思想也可以实现:检查网络状况、检查权限状态、避免按钮多次点击、自动完成缓存等情况。
    如何实现:通过自定义注解,对加入该注解的方法进行代码织入。避免按钮多次点击:加入时间判断即可。

    相关文章

      网友评论

          本文标题:性能优化,还得看AspectJ

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