Android中的AOP面向切面编程

AOP 的应用场景

日志记录、性能统计、埋点统计、安全控制和异常处理。

AOP 的常见框架

hugo

AOP 的基本概念

  • 横切关注点(Cross-cutting concerns)
  • 连接点(Joint point)
  • 通知(Advice)
  • 切入点(Pointcut)
  • 切面(Aspect)
  • 织入(Weaving)

常见AOP 的实现方式

盗图

APT

APT(Annotation Processing Tool)即注解处理器。在编译期生成.java文件,使用的 Annotation 类型是 SOURCE.

代表框架:DataBinding、Dagger2、ButterKnife、EventBus3、DBFlow、AndroidAnnotation

特点:

  1. 只能生成.java文件,而不能在现有类中插入代码
  2. 可以通过javapoet来简化.java的生成操作
  3. 会在运行时产生一些代理类的缓存,增加内存的负担。

AspectJ

Javassist

AspectJ简单使用

AspectJ 相关注解

  • @Aspect:声明切面,标记类
  • @Pointcut(切点表达式):定义切点,标记方法
  • @Before(切点表达式): 切点之前执行
  • @Around(切点表达式):切点之前之后执行(切点执行 oinPoint.proceed)
  • @After(切点表达式):后置通知,切点之后执行
  • @AfterReturning(切点表达式):返回通知,切点方法返回结果之后执行
  • @AfterThrowing(切点表达式):异常通知,切点抛出异常时执行

切点表达式

1
execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?)

参考文章

书籍:《Android高级进阶》

文章:https://www.jianshu.com/p/8582f896d136?utm_source=desktop&utm_medium=timeline

文章:https://www.jianshu.com/p/890dd0b77ded

文章:https://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×