ARouter简介
ARouter 是阿里开源的一款帮助 Android APP 进行组件化改造的路由框架,可以实现在同一个项目中互不依赖的的模块的 Activity 之间跳转。 ARouter 的路由、参数和拦截器都是用注解来标注的。注解在 Retrofit、Dagger 和 EventBus 中都有使用。 ARouter 的跳转是基于路由表 RouterMap 实现的,负责生成路由表的是 RouteProcessor ,负责加载路由表的是 LogisticsCenter 或 RegisterTransform 。
组件化的目的是什么?
为什么不同Module的Activity之间,不能跳转?怎么解决?
组件化的各个业务模块module之间,相互独立,没有依赖关系,所以,在一个module中,不能获取另外一个module中的Activity.class。解决方案是所有业务module都依赖公共的路由module,路由module中包含了路由表,路由表是一个HashMap,存储了activity.class。需要跳转时,可以从路由表中取出。
为什么要用反射?
通过反射,根据注解的位置获取类名和包名,再应用APT技术,根据类名和包名,生成Java代码。这段Java代码的功能,就是把activity.class存入HashMap中,需要跳转到其他Module的Activity时,直接从HashMap里面取出activity.class。
Arouter的原理是什么?
- 通过注解标记Activity
- 通过反射,找到注解标记的类名和包名,并保存。
- 通过APT技术,根据保存的类名和包名,生成对应的Java代码,这段Java代码的功能就是把activity.class存入路由表,也就是HashMap。
- 不同业务module需要跳转到对应的Activity时,直接从HashMap中取出对应的activity.class,就可以实现跳转。
手写一个Arouter 探索 ARouter 原理
|