- ARouter
router-annotation 路由注解模块
- src.main.java
- com.alibaba.android.arouter
- facade 提供注解和枚举的包
- annotation 存放各种注解类的包
- Autowired.java 自动注入的注解
- Interceptor.java 拦截器的注解
- Param.java(废弃) 参数注解: 被 Autowired 淘汰
- Route.java 路由信息注解
- enums 包含各种枚举类型的包
- RouteType.java 路由类型的枚举
- TypeKind.java 类型种类的枚举
- model 包含模型类的包
- RouteMeta.java 路由元信息的模型类
- TypeWrapper.java 存储目标对象的泛型类型信息的类
- annotation 存放各种注解类的包
- facade 提供注解和枚举的包
- com.alibaba.android.arouter
- src.main.java
arouter-api ARouter框架的API模块
- src.main.java
- com.alibaba.android.arouter
- base 基础功能相关的包
- UniqueKeyTreeMap.java 唯一键树形映射的类
- core 核心功能相关的包
- AutowiredLifecyleCallback.java(废弃) 自动注入生命周期回调的类
- AutowiredServiceImpl.java 自动注入服务的实现类
- InstrumentationHook.java(废弃) 仪表钩子的类
- InterceptorServiceImpl.java 拦截器服务的实现类
- LogisticsCenter.java 物流中心的类
- Warehouse.java 仓库的类
- exception 异常相关的包
- HandlerException.java 处理异常的类
- InitException.java 初始化异常的类
- NoRouteFoundException.java 未找到路由的异常类
- facade 提供各种服务和回调的包
- callback 回调相关的包
- InterceptorCallback.java 拦截器回调的接口
- NavigationCallback.java 导航回调的接口
- NoRouteFoundException.java 未找到路由的异常接口
- callback 回调相关的包
- service 服务相关的包
- AutowiredService.java 自动注入服务的接口
- ClassLoaderService.java 类加载器服务的接口
- DegradeService.java 降级服务的接口
- InterceptorService.java 拦截器服务的接口
- PathReplaceService.java 路径替换服务的接口
- PretreatmentService.java 预处理服务的接口
- SerializationService.java 序列化服务的接口
- template 模板相关的包
- IInterceptor.java 拦截器接口
- IInterceptorGroup.java 拦截器分组接口
- Ilogger.java 日志记录器接口
- IPolicy.java 策略接口
- IProvider.java 提供者接口
- IProviderGroup.java 提供者分组接口
- IRouteGroup.java 路由分组接口
- IRouteRoot.java 路由根接口
- Isyringe.java 注射器接口
- Postcard.java 路由信息封装类
- launcher 启动器: 包含一些用于启动ARouter框架的类和线程管理相关的类。
- _Arouter.java ARouter框架的内部启动类,用于初始化ARouter。
- Arouter.java ARouter框架的启动类,用于初始化ARouter。
- thread (线程)包含了与线程管理相关的类。
- CancelableCountDownLatch.java 可取消的倒计时计数器,用于线程同步。
- DefaultPoolExecutor.java 默认的线程池执行器,用于执行异步任务。
- DefaultThreadFactory.java 默认线程工厂,用于创建线程。
- utils 工具类。
- ClassUtils.java 用于操作类的实用工具类。
- Consts.java 包含一些常量值的类。
- DefaultLogger.java 默认的日志记录器类。
- MapUtils.java 用于操作地图数据的实用工具类。
- PackageUtils.java 用于操作包信息的实用工具类。
- TextUtils.java 用于操作文本数据的实用工具类。
- base 基础功能相关的包
- com.alibaba.android.arouter
- src.main.java
arouter-compiler
- src.main.java
- com.alibaba.android.arouter
- compiler 编译相关的包
- entity 实体类相关的包
- RouteDoc.java 路由文档实体类
- processor 处理器相关的包
- AutowiredProcessor.java 自动注入处理器
- BaseProcessor.java 基础处理器
- InterceptorProcessor.java 拦截器处理器
- RouteProcessor.java 路由处理器
- utils 工具类相关的包
- Consts.java 常量类
- Logger.java 日志记录器类
- TypeUtils.java 类型工具类
- entity 实体类相关的包
- compiler 编译相关的包
- com.alibaba.android.arouter
- src.main.java
router-annotation 路由注解模块
annotation 存放各种注解类的包
Autowired
自动注入的注解
1 | package com.alibaba.android.arouter.facade.annotation |
标记需要注入的字段:在你的类中,标记需要进行自动注入的字段。使用 @Autowired
注解,例如:
1 | import com.alibaba.android.arouter.facade.annotation.Autowired; |
在这个示例中,myDependency
字段被标记为需要自动注入的依赖对象。
假设你有两个相同类型的依赖对象 MyDependency
,但它们在功能上略有不同,你需要指定要注入哪一个。
1 | javaCopy code |
Interceptor
1 | package com.alibaba.android.arouter.facade.annotation |
要使用 @Interceptor
注解,你需要将其标记在实现了 IInterceptor
接口的类上,以定义一个拦截器。然后,你可以使用这个拦截器来拦截路由操作。下面是使用 @Interceptor
注解的一般步骤:
创建一个实现了 IInterceptor
接口的类,该类将用作拦截器。确保类实现了接口中的 process
方法,该方法定义了拦截器的逻辑。
1 | kotlinCopy code |
Param(废弃)
1 | package com.alibaba.android.arouter.facade.annotation |
既已废弃,不浪费时间
Route
1 | package com.alibaba.android.arouter.facade.annotation |
这个类定义了一个用于标记页面可由路由器路由的注解 @Route
。该注解包含了五个元素,分别表示路由的路径、组名、名称、额外数据和优先级。
创建一个页面类,并在该类上添加 @Route
注解,以标记这个页面可以被路由器路由。
1 | import com.alibaba.android.arouter.facade.annotation.Route |
在上面的示例中,我们创建了一个名为 ExampleActivity
的页面类,并使用 @Route
注解标记了这个页面的路由路径为 "/example/activity"
。
enums 包含各种枚举类型的包
RouteType
1 | package com.alibaba.android.arouter.facade.enums |
TypeKind
1 | package com.alibaba.android.arouter.facade.enums |
model 包含模型类的包
RouteMeta
1 | package com.alibaba.android.arouter.facade.model |
private RouteType type
:表示路由的类型,可能是普通路由、自动注入、或者其他类型。private Element rawType
:表示路由的原始类型的元素。private Class<?> destination
:表示目标类,即路由到哪个页面。private String path
:表示路由的路径,用于唯一标识一个路由。private String group
:表示路由的分组,通常用于组织路由。private int priority
:表示路由的优先级,数值越小表示优先级越高。private int extra
:表示额外的数据,可以用于传递一些标记或开关。private Map<String, Integer> paramsType
:表示参数类型的映射。private String name
:表示路由的名称。
RouteMeta 是 Route 原子信息与其构建类
TypeWrapper
1 | package com.alibaba.android.arouter.facade.model |
通过 Java 反射获取当前类的父类,然后从父类中获取泛型参数的类型信息,并将其赋值给 type
字段。这样,这个类就能够存储目标对象的泛型类型信息。