02.AOP面向切面编程 - 淘宝京东网络处理
1. 希望所讲的内容大家觉得耳目一新
2. 能够学到一些新的东西
3. 多花时间跟上来
京东的网络处理:没网是点击是没反应的,有网的时候点击才能调整
1. 每个方法做判断 if(有网) 跳转
不好的地方,每个方法都判断 ,没有扩展性可言
2. 内涵段子我所写的 IOC 注解扩展一个网络判断,必须要基于我的 IOC 注解
3. 面向切面编程 OOP(面向对象) AOP (面向切面)
1.定义:
把某一方面的一些功能提取出来与一批对象进行隔离,提取之后我们就可以对某个单方面的功能进行编程。
2.套路:
把众多方法中的所有共有代码全部抽取出来,放置到某个地方集中管理,然后在具体运行时,再由容器动态织入这些共有代码的话,最起码可以解决两个问题:
1.1 Android程序员在编写具体的业务逻辑处理方法时,只需关心核心的业务逻辑处理,既提高了工作效率,又使代码变更简洁优雅。
1.2 在日后的维护中由于业务逻辑代码与共有代码分开存放,而且共有代码是集中存放的,因此使维护工作变得简单轻松。
1.3 面向切面编程AOP技术就是为解决这个问题而诞生的,切面就是横切面,代表的是一个普遍存在的共有功能,例如,日志切面、权限切面及事务切面等。
- 淘宝京东网络判断处理
1. 动态代理 (aop)比如说 MVP 里面的 每次要去判断 M 层是不是等于空
2. 比如我们经常在 application 里面做一些 Activity 生命周期的监听
3. 基于第三方的一些编译工具 AspectJ
3.1 下载 aspectj-1.8.10.jar 文件
3.2 双击安装 一直点击下一步
3.3 新建应用 然后在 build.gradle 里面添加配置
3.4 去安装目录下面 copy 一个开发包
3.5 写代码
以后更多的是要去思考 ,最后可以去扩展 。练习:处理权限实现
3.6 怎么实现的?
会不会影响性能? 1 ,2
运行按钮 我们用了 aspectj 第三方的编译器 ,class 文件是由 aspect 去编译,是因为 aspect 会去拷贝代码的
class 文件 代码其实是如下:
if(CheckNetUtil.isNetworkAvailable(this))
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);`
}
怎么验证我说的,反编译源码
交流群 546270670
视频Grace 2746186102