Android组件化,几种路由方案的对比选型(Intent、Navigation、ARouter)
其他
2021-03-06 02:05:24
阅读次数: 0
什么是路由
- 页面间跳转关系映射,可以通过字符串、别名等方式实现跳转
Intent
- 跳转过程无法控制,一旦调用了startActivity(Intent)便交由系统执行,中间过程无法插手
- 跳转失败无法捕获、降级,出现问题直接抛出异常
- 显示Intent
显示Intent中因为存在直接的类依赖关系,导致耦合严重
- 隐式Intent
隐式Intent中会出现规则集中式的管理,导致协作困难,都需要在Manifest中进行配置,导致扩展性比较差
ARouter和Navigation对比
|
Navigation |
ARouter |
跳转行为 |
通过页面的action跳转,支持Activity,Fragment,Dialog |
支持标准URL跳转 |
模块间通信 |
不支持,需要将所有页面定义在一个资源文件里 |
@Route注解配置,根据Path获取对应的接口实现 |
路由节点注册 |
统一在navigation_mobile.xml中注册 |
@Route注解 |
路由节点的生成方式 |
加载navigation_mobile.xml生成NavGraph导航视图 |
按照组划分 |
拦截器 |
不支持 |
支持全部定义拦截器,可以自定义拦截顺序 |
转场动画 |
支持 |
支持 |
降级策略 |
不支持 |
支持全局降级和局部降级 |
参数自动注入 |
不支持 |
@Autowired注解实现 |
外部跳转控制(h5打开app页面) |
deeplink页面直达 |
需要配置入口Activity,支持的uri需要在Manifest中配置 |
转载自blog.csdn.net/yu540135101/article/details/114361959