学习笔记--路由组件ARouter

ARouter介绍

ARouter介绍
  • AutoWired注解:标记需要自动注入的参数
  • Route注解:标记页面为路由节点
  • Interceptor注解:标记一个类为拦截器,在路由过程中实现按需拦截
  • IProvider接口:配合Route注解暴露服务供其他模块调用。实现跨模块调用的能力
  • RouteProcessor:编译时扫描被Route注解标记的类,将路由信息收集起来,按照模块和路由组的划分写入相应的文件中
  • AutowiredProcessor:编译时扫描被AutoWired注解标记的字段和所在的类,将字段和类一一对应的收集起来,然后写入文件。该文件就是在运行阶段拿来实现参数自动注入工作的类。
  • InterceptorProcessor:编译时扫描被Interceptor注解标记的类,将模块下所有拦截器的类相关信息收集起来,写入文件

ARouter基本用法

依赖引入与配置和基本用法

ARouter编译时原理分析

ARouter编译原理
  • RouteProcessor扫描当前模块下标记了@Route注解的类,识别注解标记类的类型是什么(如Activity,Broadcast,Provider,Service, ContentProvider,Fragment),将类的关键信息包装成RouteMeta对象,并且按照路由组的概念分别存储到groupMap的集合当中,最后遍历groupMap生成当前模块下的路由组文件(ARouter$$Group$$groupName),当前模块下路由的根节点源文件(ARouter$$Root$$app),当前模块下对外暴露服务的Provider源文件(ARouter$$Providers$$app),如果开启了生成文档的开关,还会生成当前模块的路由Json描述文件

  • InterceptorProcessor扫描当前模块下标记了@Interceptor注解的类,然后把拦截器的优先级、名称、class对象信息写入ARouter$$Interceptors$$app这个文件

  • AutowiredProcessorr扫描当前模块下标记了@AutoWired注解的所有的字段,然后解析每个字段的名称和数据类型,生成能够从Intent读取参数并且给该字段赋值的源文件。

JavaPoet

JavaPoet的使用和介绍

ARouter初始化流程

ARouter初始化流程

ARouter路由流程

ARouter路由流程

你可能感兴趣的:(学习笔记--路由组件ARouter)