AOP即面向切面编程,实现aop的框架很多,这里选用AspectJ,具体介绍和区别参见网上其他文章,这里仅做使用过程的记录~
这里选用的是第三方开源库 AspectJX,这是一个基于AspectJ并在此基础上扩展出来可应用于Android开发平台的AOP框架,可作用于java源码,class文件及jar包,同时支持kotlin的应用。github地址 :https://github.com/HujiangTechnology/gradle_plugin_android_aspectjx
注意:参照官方文档上写的引入方式有个坑,会提示找不到资源,是无法成功引入的,以2.0.6版本为例:
需要把项目根目录下的build.gradle里的依赖
classpath 'com.github.franticn:gradle_plugin_android_aspectjx:2.0.6'
替换为
classpath'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.6'
其他步骤参照官方文档就可以成功引入啦~
接下来就可以进入正题了,首先说明AOP的用途很广泛,我这里只是简单记录如何使用,所以代码精简的不能再精简了......
以常用的登录检查为例:分三步走
第一步:定义一个注解。这个没什么可讲的
第二步:编写切面,定义切入点及拦截逻辑。
这里需要注意的是定义切入点的时候括号里的语法问题,一定不能错
第三步:在需要检查是否登录的方法上添加刚才定义的注解即可
至此,当调用 testMethod方法的时候,就会执行定义的拦截逻辑代码了。
测试结果如下
可以看到,当未登录时,testMethod方法是被拦截了,没有继续执行的,而已登录时则是正常执行。这就完成了最简单的aop使用了。