Skip to content
FlyJingFish edited this page Sep 12, 2024 · 37 revisions

概述

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

建议您先通过浏览首页来快速了解本库的使用方法,形成大致思路,然后再来阅读 wiki 文档。

选择合适的方式可以写出优美的代码,遇到问题请优先通过浏览wiki文档解决,解决不了的再去首页加群交流

本库提供的切面方式分别如下

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

除了 @AndroidAopPointCut 都可以利用 “AOP 代码生成助手”辅助你使用本库

其区别如下:

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

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

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

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

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