【Android AOP–01】Android用AspectJ来实现AOP编程
前言
小伙伴们,大家好,我是唠嗑,很长时间没有升级Android系列文章了,最近研究了一下AOP,觉得很有意思,也很实使用,所以打算写一个关于AOP的系列文章,和大家一起讨论学习。
其实在去年,我就在项目中使用过了一次AOP,大家可以看看。
Android AOP面向切面编程详解
接下来就带小伙伴学习一下,如何在你的项目中用AOP。
用AOP,是需要做一大堆配置的,为了方便,我们用沪江同学的开源项目AspectJ
HujiangTechnology/gradle_plugin_android_aspectjx
用步骤
1、在项目的根目录的build.gradle中增加如下依赖
dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
2、在app.gradle中增加如下
apply plugin: 'android-aspectjx'//或者者这样也可以apply plugin: 'com.hujiang.android-aspectjx'dependencies { //aspectjrt的依赖 compile 'org.aspectj:aspectjrt:1.8.9'}
到这里,配置就算完成了。这是我目前用过的最简单的配置了。
通过一个小例子来讲解
平常我们经常会使用到Log日志,比方在Activity的所有生命周期的方法中加一条Log。
下面一起来看看通过AOP是如何实现的。
创立一个AspectTest类
@Aspectpublic class AspectTest { final String TAG = AspectTest.class.getSimpleName(); /** * 在MainActivity的所有生命周期的方法中打印log * @param joinPoint * @throws Throwable */ @Before("execution(* *..MainActivity+.on**(..))") public void method(JoinPoint joinPoint) throws Throwable { MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature(); String className = joinPoint.getThis().getClass().getSimpleName(); Log.e(TAG, "class:" + className); Log.e(TAG, "method:" + methodSignature.getName()); }}
注视详解:
@Aspect注解
:标示这是一个切面类@Before
:可以在方法后插入代码
MainActivity
只要要增加生命周期的几个方法就可。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); }
看看打印结果
怎样样?很简洁方便吧。使用AOP一个最大的好处是:在不入侵原有代码的情况下,可以对同一功能统一解决,比方检查登录,检查权限,防止按钮二次点击等。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【Android AOP–01】Android用AspectJ来实现AOP编程
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 【Android AOP–01】Android用AspectJ来实现AOP编程