在超大型app项目中页面往往上百个乃至几千个,同时HyBrid开发也是目前所有主流应用基本配置,H5与Native原生页面的交互会相当频繁,如果没有一个很好的解耦方式,那么从网页跳转原生页面会产生相当大的耦合不利于项目维护以及组件化发展,同时还需要app不断的升级才能支持新的跳转机制。
举个例子,URI集中管理,也就是会将页面统一注册到AndroidManifest.xml或者自定义集中管理区,每新增一个页面就要去注册一个久而久之会越来越庞大。
另外在HyBrid开发中网页调用客户端页面,跳转不同页面时可能携带参数不一样,就需要在客户端进行修改以获得支持,需要客户端版本不断升级才能支持而且随着时间推移也会越来越庞大。
还有跳转错误无法降级,直接抛出异常.
比如在app2.0版本上新增了一个页面A,那么当在1.0版本中跳转到页面A时,发现没有可以降级处理,比如跳转到H5页面。
同时Arouter具备自动注册映射关系功能,不需要维护几百个页面的映射关系。
阿里巴巴推出的开源项目Arouter可以有效的解决上述问题,以下是其功能简介:
一、功能介绍
支持直接解析标准URL进行跳转,并自动注入参数到目标页面中
支持多模块工程使用
支持添加多个拦截器,自定义拦截顺序
支持依赖注入,可单独作为依赖注入框架使用
支持InstantRun
支持MultiDex(Google方案)
映射关系按组分类、多级管理,按需初始化
支持用户指定全局降级与局部降级策略
页面、拦截器、服务等组件均自动注册到框架
支持多种方式配置转场动画
支持获取Fragment
完全支持Kotlin以及混编(配置见文末 其他#5)
从外部URL映射到内部页面,以及参数传递与解析
跨模块页面跳转,模块间解耦
拦截跳转过程,处理登陆、埋点等逻辑
跨模块API调用,通过控制反转来做组件解耦。
本文将主要介绍被动注册和通过Url跳转功能实现。
Arouter主要有两部分组成,Compiler SDK和API SDK
Arouter结构其中Compiler由三部分组成,包括Router Processeor Intercepter Processor以及Autowire Processor这三个处理器分别负责路由,拦截器以及自动装配工作。Compiler是在编译期工作的而APISDK是在运行期工作。
Compiler的RouteProcessor以及autowireProcessor利用javaPoet进行注解自动生成代码。
URL跳转Activity逻辑
网友评论