美文网首页框架【库】
AOP在安卓上的实现

AOP在安卓上的实现

作者: 码农呀 | 来源:发表于2019-06-27 11:45 被阅读32次

在文章的开篇,我觉得我们有必要先了解AOP是个什么东东,AOP和OOP又有什么区别,
这个时候小伙伴们就避免不了百度一波啦~
笔者也去百度了一波,可以搜到这么解释:AOP(Aspect Oriented Programming)是面向切面编程,AOP和我们平时接触的OOP编程是不同的编程思想,OOP是面向对象编程,提倡的是将功能模块化,对象化。

那么我们就会有一个疑问,什么是面向切面?为什么叫切面?
在数学中,百度是这么解释的只包含圆柱丶圆锥的一条母线的平面,称作圆柱或圆锥的切面,
在Java中,别人是这么解释的把非业务逻辑相关的代码抽取出来定位到具体的连接点上的一种实现方式
这两者可以翻译成一个共同点就是把一个集中的部分划分出来处理.那么可以解释为AOP.
从思想上我们可以这么理解了,那么在代码层面又是怎么利用起来呢?
带着疑问,我又去百度了一波.别说,还真的挺有用的!!
百度是这么说的:市面上实现了AOP思想的方式主要有两种,那就是ASpectJ和Lancet.
Lancet是安卓的一个轻量级的AOP框架,它只能支持hook具体的方法,而ASpectJ则支持hook整个类或者方法
不过Lancet的好处在于他是轻量的,只需要几行代码就能完成注入
P话那么多,no code say J8?
肯定不会的,那么我们去CV一下:
AspectJ:
首先,我们在根build.gradle上添加一个东东:classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:1.0.8'
然后,我们在app或者你的猫丢了的build.gradle的dependencies下添加: compile 'org.aspectj:aspectjrt:1.8.9',在顶部上添加:apply plugin: 'android-aspectjx'
如果出现编译失败,那么请添加
aspectjx {
includeJarFilter 'universal-image-loader', 'AspectJX-Demo/library'
excludeJarFilter 'universal-image-loader'
}
如果还不行,请放弃,因为我也不知道!!!!!!!!!!!
看个栗子:
我们先创建一个AspectJ文件
@Aspect
public class AspectDemo {

private static final String TAG = "AspectDemo ";

@Before("execution(* android.app.Activity.on**(..))")
public void onActivityMethodBefore(JoinPoint joinPoint) throws Throwable {
    String msg= joinPoint.getSignature().toString();
    Log.d(TAG, "onActivityMethodBefore: " + msg);
}

}
然后在Act中
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

}
当我们APP编译了之后,会在build目录下生成一个文件,在onCreate的最前面会插入一段AspectJ的代码

相关文章

  • AOP在安卓上的实现

    在文章的开篇,我觉得我们有必要先了解AOP是个什么东东,AOP和OOP又有什么区别,这个时候小伙伴们就避免不了百度...

  • Web微信API接口在安卓下的实现

    Web微信API接口在安卓下的实现 github地址 what is it web微信api接口的封装库,在安卓上...

  • 面向切面编程AOP

    安卓 AOP 实战:面向切片编程 T-MVP

  • Spring--AOP使用

    Spring的AOP也是基于AspectJ,和安卓中(之前文章:Android--AOP架构设计之使用Aspect...

  • 安卓实现IPC(二)—— Intent

    上一篇文章(安卓实现IPC(一)—— IPC概论)提到了安卓实现IPC的四种方式,第一种就是使用Intent来实现...

  • AspectJ 在APM上的应用(一)

    ​ APM的工作刚刚告一段落,在实现安卓端apm性能监控,总是离不开aop切面编程。项目中我所使用的插桩工具是...

  • 介绍几个常见的安卓模拟器

    安卓模拟器,一般是在电脑模拟安卓手机,从而在电脑上玩手机游戏。一般安卓模拟器可以实现键盘映射、模拟定位、游戏辅助等...

  • 安卓优化系列之安卓应用的启动

    前言 目前的安卓应用基本上都趋于成熟了,所以目前对安卓开发的要求不再是实现功能了,而是要能够优化应用。然而安卓应用...

  • 安卓利用termux开发python

    一 介绍 termux 是一个安卓平台下的app, 它能够在安卓上实现一个微型的linux,具有命令行界面,可以以...

  • 安卓和ios实现ActionSheet

    安卓和ios实现ActionSheet 这是安卓的效果,ios的效果同上。 在项目里用到react-native-...

网友评论

    本文标题:AOP在安卓上的实现

    本文链接:https://www.haomeiwen.com/subject/xmrlcctx.html