1,什么是路由?
映射页面跳转关系,包含跳转相关的一切功能
简单描述:路由是一个框架,可以控制,转发对页面的跳转。并在转发前做相应的修改。
2,android原生已经提供startActivity,为什么还要使用路由框架呢?
1)使用startActivity()的缺点是需要打开的那个Activity的类已经存在,否则无法通过编译,但是在协同开发中,这往往是无法得到满足的。
2)我们的模块之间使用了各种AAR的依赖,那么你如果想从一个AAR中跳转到另外一个AAR,那么需要两者有依赖关系才能获取到XXX.class,否则你拿不到类,更不用说跳转了。
3)在一些复杂的业务场景下,灵活性比较强,很多功能都是动态配置的,比如下发一个活动页面,我们事先并不知道具体的目标页面,但如果事先做了约定,提前做好页面映射,便可以自由配置。
4)随着业务量的增长,客户端必然随之膨胀,开发人员的工作量越来越大,比如64K问题,比如协作开发问题。App一般都会走向组件化的道路,而组件化的前提就是解耦,那么我们首先要做的就是解耦页面之间的依赖关系。
5)模块跳转,组件化
3,常见的路由框架activityrouter(https://github.com/mzule/ActivityRouter),ARouter(https://github.com/alibaba/ARouter)他们都注重动态跳转,统一转发。
ActivityRouter特点:基于apt技术,通过注解方式来实现URL打开Activity功能,并支持在WebView和外部浏览器使用,支持多级Activity跳转,支持Bundle、Uri参数注入并转换参数类型。
1)支持注解方式、手动方式注册Activity。
2)支持注入Bundle、Uri的参数并转换格式。
3)支持多级跳转。
4)支持HTTP协议。
5)支持外部浏览器打开。
6)支持目标Activity的URL构造器访问。
主要核心知识点:
1)Android 中的 Intent 机制
2)Java 反射机制
3)Android 的编译时注解
4)APT 技术以及 Javapoet 技术
ActivityRouter原理:就是用一个 Map 来存储具体的路由、实体 Activity 之间的映射。然后在利用 Android 自身的 Intent 机制,来进行界面的跳转。