Android组件化,几种路由方案的对比选型(Intent、Navigation、ARouter)

什么是路由

  • 页面间跳转关系映射,可以通过字符串、别名等方式实现跳转

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
今日推荐