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