做一个学习记录:
Android中的AOP编程
Android之AOP
Android Studio 中自定义 Gradle 插件
看AspectJ在Android中的强势插入
jarryleo / MagicBuriedPoint
AspectJ 的两种用法
(1)用自定义注解修饰切入点,精确控制切入点,属于侵入式;
(2)不需要在切入点代码中做任何修改,属于非侵入式。
侵入式
侵入式用法,一般会使用自定义注解,以此作为选择切入点的规则。
非侵入式
非侵入式,就是不需要使用额外的注解来修饰切入点,不用修改切入点的代码。
项目接入使用:
一般情况下我们会新建一个独立模块提供给其它项目接入使用,如下图TrackPoint模块
build.gradle模块配置
两种方式:1.apply plugin: 'android-aspectjx'
2.implementation 'org.aspectj:aspectjrt:1.8.+'
注解方式:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AspectAnalyze {
String name();
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AspectDebugLog {
}
public class MainActivity extends Activity {
private Button myButton;
private final String TAG= this.getClass().getSimpleName();
@AspectAnalyze(name = "MainActivity.onCreate")
@O