ARouter是什么?
ARouter是:阿里巴巴自研路由框架,主要解决组件间、模块间的 界面跳转 问题。
ARouter优势
- 原生的路由方案存在的问题
首先谈一谈原生的路由方案存在的问题以及为什么需要路由框架。我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。
文章图片
5249989-dae988520998964e.png 【ARouter笔记】这时候如果考虑使用自定义的路由组件就可以解决以上的一些问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。
拦截器就是ARouter中提出的针对AOP思想的实现,AOP是一种面向切片编程思想
ARouter跳转原理
文章图片
10018045-493c8e3b855f4332.png
从上图流程中,我们可以发现Arouter中原理:
1.通过apt技术利用注解编译时生成类,封装目标界面类的类信息。(APT(Annotation Processing Tool)即注解处理器)
2.在初始化时,把编译生成的类通过key-value的方式存储在arouter中。
3.发送操作者通过key获取到目标界面类的信息。
4.把发送操作者的信息与目标界面类信息进行结合或者关联在一起。
5.实现跳转功能。
组件化的一个数据共享问题:
https://blog.csdn.net/lianwa88/article/details/79973958
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0908/8488.html
主要思路是在Base建立一个Service接口,一个组件去实现接口,一个去调用接口,形成通信。