阿里ARouter使用及原理详细介绍
来源:互联网 发布:青岛seo外链外包 编辑:程序博客网 时间:2024/05/16 09:46
什么是路由跳转?为什么要用路由跳转?
路由跳转:
web开发框架一般支持用户设置路由表,让表内的页面/层级,产生可互相跳转,转发等行为(如果理解不正确请指出)
要用的理由1:
项目大了就无法获取到其他包的Activity.class了
要用的理由2:
逻辑清晰,比较语义化,清楚的知道跳转路径和目的地
要用的理由3:
不单单可以应用于普通Activity还可以与浏览器做一些业务逻辑。(如果有遗漏请指出)
ARouter所实现的功能:
支持直接解析URL进行跳转、参数按类型解析,支持Java基本类型(*)支持应用内的标准页面跳转,API接近Android原生接口支持多模块工程中使用,允许分别打包,包结构符合Android包规范即可(*)支持跳转过程中插入自定义拦截逻辑,自定义拦截顺序(*)支持服务托管,通过ByName,ByType两种方式获取服务实例,方便面向接口开发与跨模块调用解耦(*)映射关系按组分类、多级管理,按需初始化,减少内存占用提高查询效率(*)支持用户指定全局降级策略支持获取单次跳转结果丰富的API和可定制性被ARouter管理的页面、拦截器、服务均无需主动注册到ARouter,被动发现 支持Android N推出的Jack编译链
内容来自:https://github.com/alibaba/ARouter/blob/master/README_CN.md
如何使用请见:https://github.com/alibaba/ARouter官方介绍
我们来看一下他是如何实现的
首先先获取ARouter的实例,内部没有什么复杂操作,首先判断有没有初始化,如果初始化了再盼空,如果为空就创建一个ARouter对象,然后将其返回。
获取实例之后,先构建路径build
首先先判空,如果路径没东西就抛异常
不为空之后把时间逻辑交由PathReplaceService接口来处理
PathReplaceService 接口用于处理path相关逻辑,如果要自定义path处理方法可自行二次实现
分发完后调用了另外个build方法
protected Postcard build(String path, String group) {
if (StringUtils.isEmpty(path) || StringUtils.isEmpty(group)) {
throw new HandlerException(Consts.TAG + “Parameter is invalid!”);
} else {
PathReplaceService pService = ARouter.getInstance().navigation(PathReplaceService.class);
if (null != pService) {
path = pService.forString(path);
}
return new Postcard(path, group);
}
}
行为几乎一致,但是这里把我们的路径分配到了默认组内并生成新的Postcard对象返回
看到这里有点尴尬,Postcard是什么鬼?
Postcard在com.alibaba.android.arouter.facade目录下是一个包含路线图的容器
里面有一些我们一看就懂的字段
private Uri uri;private Object tag; private Bundle mBundle; private int flags = -1; private int timeout = 300; private IProvider provider; private boolean greenChannal;
很明显他就是整个路由行为的一个载体,可分配url,group,path等等,既然是一个是载体,那我们就不管他干啥,反正就是一个带信息传递用的“快递小哥”
其实最终要的就这几个类:
1:直接外观使用类ARouter
2:基本数据载体类PostCard以及他的父类RouteMeta
3:自定义拦截规则接口IInterceptor
4:页面跳转过程中的回调接口NavigationCallback,就像网络请求的回调接口一样,监听网络请求的过程,不过NavigationCallback的各个接口方法都是在子线程调用的,如果想操作UI必须用代码切换到UI线程。
demo:https://github.com/XinRan5312/QXFirstARouter
- 阿里ARouter使用及原理详细介绍
- Android跳转-ARouter详细使用教程
- ARouter使用及源码简析
- Android组件化方案—阿里路由ARouter的使用
- 使用阿里ARouter路由实现模块化开发流程
- 阿里ARouter源码分析
- ARouter路由框架介绍
- NuSoap介绍及使用详细
- Java集合详细介绍及原理
- HTTPS 通信原理及详细介绍
- ARouter解析一:基本使用及页面注册源码解析
- cglib 介绍 原理 及 使用
- ZooKeeper介绍、使用及原理
- 阿里路由框架--ARouter 源码解析之初始化ARouter
- Arouter 使用问题
- ARouter基本使用详情
- Maven介绍及环境搭建及阿里云镜像仓库使用
- Ajax原理及使用详细指南
- caffe中fine-tuning的那些事
- Java Socket简单实例
- mina心跳包:客户端发送心跳包,服务端响应心跳包
- php中利用curl访问接口、上传文件
- Linux 性能测试工具
- 阿里ARouter使用及原理详细介绍
- 压缩包的上传编译
- spring boot 限制初始值大小及参数中文详解
- LED实验&&I/O口实验--将 P0 作为输出口,连接 8 个 LED,编写程序,使 LED 循环点亮。(LED1 亮,其余灭->ED2 亮,其余灭……,如此循环 5 次后,进行全灭-全亮
- 线程剖析(part2)—线程控制及线程属性
- 一篇不错的v4l2
- 为Spring配置文件添加提示功能
- lvs 网卡多队列
- 自定义圆形Drawable