Skip to content
Yang Feng edited this page Nov 4, 2016 · 1 revision

Welcome to the Android-AOPExample wiki!

这是一个在Android上实现AOP(Aspect Orientated Programming)的例子. AOP在Java编程Spring框架里广泛使用. 关于AOP可阅读面向切面编程(AOP)的理解Aspect Oriented Android Development – Tool Integration

本工程是Aspect Oriented Programming in Android的示例代码.演示用AOP来实现给Android类的方法,切入自己实现的函数运行性能监测功能,由Log打印出函数运行所用时长.不使用AOP的方式,可以在Android Java代码里,进入函数开始计时,函数返回前算出消耗时长并打印出来.这种方案最大的特点就是为函数计时的功能代码揉到各个业务函数代码里,纠缠不清.而AOP方案使用Java的反射机制+代理的设计模式,在独立的库模块实现为函数计时的功能,并提供注解@DebugTrace.Android业务函数只需要用@DebugTrace就可以为该函数注入计时功能.

关于注解的扫盲,可以参考这个wiki. @interface声明DebugTrace是一个自定义注解,@Target告诉编译器这个注解可用在构造函数和类的方法函数上,@Retention的值RetentionPolicy.CLASS告诉编译器把代码注入到编译出来的类上,其它可取的值SOURCE表示注解只注入在源码中像注释文档那样,RUNTIME是在运行时加载类文件才注入).

@Retention(RetentionPolicy.CLASS) @Target({ ElementType.CONSTRUCTOR, ElementType.METHOD }) public @interface DebugTrace {}

Clone this wiki locally