vvLavida / TechNotes

Issuses for coding summarize.
GNU General Public License v3.0
6 stars 3 forks source link

基于AOP的方法级自动埋点 #51

Open vvLavida opened 7 years ago

vvLavida commented 7 years ago

基于AOP的方法级自动埋点

AOP,面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

简单来说,就是插代码(编译期或者运行期)。

Android Usage 在Gradle中使用:https://github.com/uPhyca/gradle-android-aspectj-plugin

生命周期切面定义

// 所有继承自android.app.Activity的类的以on开头的方法 @Pointcut("execution(* android.app.Activity+.on*(..)) && this(activity) ") public void logForActivity(android.app.Activity activity) { }

// 所有继承android.support.v4.app.Fragment的类的以on开头的方法 @Pointcut("execution(* android.support.v4.app.Fragment+.on*(..)) && this(fragment) ") public void logForFragment(android.support.v4.app.Fragment fragment) { }