当前位置: 首页 > 工具软件 > ARouter > 使用案例 >

ARouter的原理

谷梁嘉悦
2023-12-01

ARouter简介

ARouter 是阿里开源的一款帮助 Android APP 进行组件化改造的路由框架,可以实现在同一个项目中互不依赖的的模块的 Activity 之间跳转。
ARouter 的路由、参数和拦截器都是用注解来标注的。注解在 Retrofit、Dagger 和 EventBus 中都有使用。
ARouter 的跳转是基于路由表 RouterMap 实现的,负责生成路由表的是 RouteProcessor ,负责加载路由表的是 LogisticsCenter 或 RegisterTransform 。

组件化的目的是什么?

  • 快速编译调试
  • 解耦合,Module复用

为什么不同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的原理是什么?

  1. 通过注解标记Activity
  2. 通过反射,找到注解标记的类名和包名,并保存。
  3. 通过APT技术,根据保存的类名和包名,生成对应的Java代码,这段Java代码的功能就是把activity.class存入路由表,也就是HashMap。
  4. 不同业务module需要跳转到对应的Activity时,直接从HashMap中取出对应的activity.class,就可以实现跳转。

手写一个Arouter
探索 ARouter 原理

 类似资料: