1.前言
- 组件化或者模块化开发模式,已逐渐成为热浪的形式,使用这些模式可以让我们程序更容易的扩展、更方便的维护
更快捷的同步开发与更简单的单独调试,而ARouter
的出现就是让组件间、模块间是实现完全的独立。 ARouter
是:阿里巴巴自研路由框架,主要解决组件间、模块间的 界面跳转 问题。- 今天用最简单的方式讲解Arouter的使用与原理。
- 文章中实例 linhaojian的Github
2.目录
3.简介
4.原理
4.1 关系分析
- 从A界面跳转到B界面这个过程,我们看看arouter与界面间关系,如下图:
- 1.注册
B界面将类的信息,通过key-value的形式,注册到arouter中。
- 2.查询
A界面将类信息与额外信息(传输参数、跳转动画等),通过key传递至arouter中,并查询对应需要跳转类的信息。
- 3.结合
将A界面类信息、参数与B界面的类信息进行封装结合。
- 4.跳转
将结合后的信息,使用startActivity实现跳转。
4.2 流程分析
- A界面跳转到B界面,arouter做了以下工作:
从上图流程中,我们可以发现Arouter中原理:
1.通过apt技术利用注解编译时生成类,封装目标界面类的类信息。
2.在初始化时,把编译生成的类通过key-value的方式存储在arouter中。
3.发送操作者通过key获取到目标界面类的信息。
4.把发送操作者的信息与目标界面类信息进行结合或者关联在一起。
5.实现跳转功能。
- 其实简单概括:将需要相互跳转的界面信息传递至arouter中存储关联 & 实现跳转。
5.使用
5.1 跳转界面不带参
- 发送跳转操作
// 1. 普通跳转
ARouter.getInstance().build("/test/activity").navigation();
- 目标界面
// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
...
}
5.2 跳转界面带参
- 发送跳转操作
ARouter.getInstance().build("/test/1")
.withLong("key1", 666L)
.withString("key3", "888")
.withSerializable("key4", new Test("Jack", "Rose"))
.navigation(