关于作者
郭孝星,程序员,吉他手,主要从事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:自动装配处理器。
页面注册
- 注解处理器扫描出被标注的类文件。
- 按照不同种类的源文件进行分类。
- 按照固定的命名格式生成映射文件。 4