1.路由介绍
什么是路由框架?
说简单点就是映射页面跳转关系的,当然它也包含跳转相关的一切功能
为什么使用ARouter?
我们先从适用场景来分析:
动态跳转:一般来说复杂的电商跳转多页面需要很强的灵活性,很多情况下是运营人员动态配置的下发活动页面,需要灵活的进行跳转。
组件化:随着业务量的不断增长,app也会不断的膨胀,开发团队的规模和工作量也会逐渐增大,面对所衍生的64K问题、协作开发问题等,app一般都会走向组件化。组件化就是将APP按照一定的功能和业务拆分成多个组件module,不同的组件独立开发,组件化不仅能够提供团队的工作效率,还能够提高应用性能。而组件化的前提就是解耦,那么我们首先要做的就是解耦页面之间的依赖关系
Native与H5的问题:现在的APP很少是纯Native的,也很少会有纯H5的,一般情况下都是将两者进行结合。这时候就需要非常便捷并且统一的跳转方案,因为在H5中是无法使用StartActivity()跳转到Native页面的,而从Native跳转到H5页面也只能通过配置浏览器的方式实现
其他等场景
原生跳转方式的不足
显式跳转, Intent intent = new Intent(activity, XXActivity.class);
由于需要直接持有对应class,从而导致了强依赖关系,提高了耦合度隐式跳转,譬如 Intent intent = new Intent(); intent.setAction(“com.android.activity.MY_ACTION”);
action等属性的定义在Manifest,导致了扩展性较差
规则集中式管理,导致协作变得非常困难。原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运行时的异常。
2.ARouter的使用
1.添加框架的依赖和配置
在各个模块的build.gradle中添加编译参数和依赖的框架
|
|
2.添加注解
|
|
3.初始化SDK
|
|
4.路由操作
|
|
5.配置自定义序列化方式
上诉的代码中有withObject进行传参,没有定义序列化方式是无法进行解析因此需要定义一个序列化方式,以下采用FastJson进行序列化
|
|
6.声明拦截器(拦截跳转过程,面向切面编程)
|
|
// 我们经常需要在目标页面中配置一些属性,比方说”是否需要登陆”之类的
// 可以通过 Route 注解中的 extras 属性进行扩展,这个属性是一个 int值,换句话说,单个int有4字节,也就是32位,可以配置32个开关
// 剩下的可以自行发挥,通过字节操作可以标识32个开关,通过开关标记目标页面的一些属性,在拦截器中可以拿到这个标记进行业务逻辑判断
@Route(path = “/test/activity”, extras = Consts.XXXX)
7.通过依赖注入解耦:服务管理(一) 暴露服务
|
|
8.通过依赖注入解耦:服务管理(二) 发现服务
|
|
小结
官方的文档Github很详细可以去看看
以上方式可以进行简单的入门使用了,下一步我们从源码分析。