谈谈Android AOP技术方案
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 理解AOP 之前几篇文章我们详细介绍了AOP的几种技术方案,由于AOP技术复杂多样,实际需求也不尽相同,那么我们应该如何做技术选型呢? 本篇将会对现有的AOP技术做一个统一的介绍,尤其侧重在Android方向的落地,希望对你有所帮助,文中内容、示例大都来自工作总结,如有偏颇不妥,欢迎指正。 这里先统一一下基本名词,以便表述。 切面: 对一类行为的抽象,是切点的集合,比如在用户访问所有模块前做的权限认证。 切点: 描述切面的具体的一个业务场景。 通知(Advice)类型: 通常分为切点前、切点后和切点内,比如在方法前织入代码是指切点前。 AOP是一种面向切面编程的技术的统称,AOP框架最终都会围绕class字节码的操作展开,无论是对字节码的操作增删改,为方便描述,我们统称为 代码的织入 。 虽然AOP翻译过来叫面向 切面 编程,但在实际使用过程中,切面可能退化成了一个 点 ,比如我们想统计app的冷启动时间,这就非常具体了。如果我们用AOP的技术实现统计所有函数的耗时时间,自然能统计到类似启动这个阶段的时间。 从狭义来看实现AOP技术的框架必须是能将切面编程抽象成上层可以直接使用的工具或API,但当我们将 切面 降维后,最终面向的就是 切点 而已。换句话说,只要能将代码织入到某个点那这种技术就一定可以实现AOP