Skip to content
FlyJingFish edited this page May 10, 2024 · 22 revisions

欢迎使用 AndroidAOP wiki文档,点击右侧导航栏看你想看的内容👉👉👉

本库提供的切面方式分别有四种方式

  • @AndroidAopPointCut 是注解切面,设置的注解加到任意一个方法上即可,当所加方法被调用时即可进入切面处理类
  • @AndroidAopMatchClassMethod 是匹配切面,匹配到某个类的某些方法,当所在类的方法被调用时即可进入切面处理类
  • @AndroidAopReplaceClass 是替换切面,会把设置的类的方法的所有调用处替换成替换切面类的方法
  • @AndroidAopModifyExtendsClass 是修改继承类,会将目标类的继承类换成所注解的类
  • @AndroidAopCollectMethod 是收集直接的继承类

其区别如下:

  • @AndroidAopMatchClassMethod 和 @AndroidAopPointCut 关注的是方法的执行(Method execution)

  • @AndroidAopReplaceClass 关注的是方法的调用(Method call)

  • 注意@AndroidAopReplaceClass 和其他两种的有着本质的区别,前两种关注的是方法的执行,并且会自动保留可以执行原有逻辑的方法(即ProceedJoinPoint);

  • @AndroidAopReplaceClass 关注的是方法的调用,是将所有调用的地方替换为您设置的类的静态方法,并且不会自动保留执行原有逻辑的方法

  • @AndroidAopReplaceClass 的优点在于“相当于”可以监测到某些系统方法(android.jar里的代码)的调用,前两者不具备这个特点,所以如果不是基于此种需求,建议使用 @AndroidAopMatchClassMethod

选择合适的方式可以写出优美的代码

@AndroidAopMatchClassMethod是匹配切面用法

@AndroidAopPointCut是通过注解切面

@AndroidAopReplaceClass是替换方法调用

@AndroidAopModifyExtendsClass是修改继承类

@AndroidAopCollectMethod是收集直接的继承类

ProceedJoinPoint切点相关信息

切点方法返回值

切面启示

常见问题