Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 2.23 KB

Android开源框架源码鉴赏:ARouter.md

File metadata and controls

66 lines (44 loc) · 2.23 KB

Android开源框架源码鉴赏:ARouter

关于作者

郭孝星,程序员,吉他手,主要从事Android平台基础架构方面的工作,欢迎交流技术方面的问题,可以去我的Github提issue或者发邮件至guoxiaoxingse@163.com与我交流。

为什么需要一个路由框架,一个优秀的路由框架需要解决什么问题?🤔

  • 显示Intent跳转,直接的类依赖,耦合严重。
  • 隐式Intent跳转,规则集中式管理,协作困难。
  • Manifest扩展性较差。
  • 跳转过程无法控制。
  • 失败无法降级。

一个优秀的路由需要去解决这些问题。

  • 支持直接解析标准URL进行跳转,并自动注入参数到目标页面中

  • 支持多模块工程使用

  • 支持添加多个拦截器,自定义拦截顺序

  • 支持依赖注入,可单独作为依赖注入框架使用

  • 支持InstantRun

  • 支持MultiDex(Google方案)

  • 映射关系按组分类、多级管理,按需初始化

  • 支持用户指定全局降级与局部降级策略

  • 页面、拦截器、服务等组件均自动注册到框架

  • 支持多种方式配置转场动画

  • 支持获取Fragment

  • 完全支持Kotlin以及混编(配置见文末 其他#5)

  • 自举

  • 扩展性

  • 简单且够用。

路由框架的特点,如下所示:

  • 分发:吧一个URL或者请求按照一定的规则跳转到某个服务或者某个页面。

  • 管理:将组件和页面按照一定的规则管理起来,在分发的时候提供搜索、加载和修改等操作。

  • 控制:在路由的过程中,可以做一些定制性的扩展,例如降级等。

  • Launcher:用户API层。

  • Service:不同于,把功能和组件封装成接口。

  • Callback:回调。

  • Template:编译期生成的组件模板。

  • Ware House:存储映射文件和配置表。

  • Thread:处理跳转和拦截的异步执行。

  • Class Tool:处理Instant Run和Mutil Dex里的兼容性问题。

Route Processor:路由处理器。 Interceptor Processor:拦截器处理器。 Autowire Processor:自动装配处理器。

页面注册

  1. 注解处理器扫描出被标注的类文件。
  2. 按照不同种类的源文件进行分类。
  3. 按照固定的命名格式生成映射文件。 4