ARouter技术架构介绍与最佳实践_第1页
ARouter技术架构介绍与最佳实践_第2页
ARouter技术架构介绍与最佳实践_第3页
ARouter技术架构介绍与最佳实践_第4页
ARouter技术架构介绍与最佳实践_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ARouter 技术架构介绍与最佳实践技术创新,变革未来一、为什么需要路由框架3二、Arouter的技术方案三、使用ARouter的最佳实践四、未来开发计划目录1. 原生的路由方案存在的问题显式:直接的类依赖,耦合严重隐式:规则集中式管理,协作困难原生的路由方案Manifest 扩展性较差跳转过程无法控制通过URL索引,无类依赖分布式管理页面配置自定义的路由组件良好的可扩展性AOP支持失败无法降级灵活的降级方式2. 为什么要用路由组件组件化开发与协作Native&H5分发把一个URL或者请求 按照一定的规则分配 给一个服务或者页面 来处理,这个流程就 是分发,分发是路由 框架最基本的功能管理将

2、组件和页面按照一 定的规则管理起来, 在分发的时候提供搜 索、加载、修改等操 作,这部分就是管理, 也是路由框架的基础, 上层功能都是建立在 管理之上控制就像路由器一样,路 由的过程中,会有限 速、屏蔽等一些控制 操作,路由框架也需 要在路由的过程中, 对路由操作做一些定 制性的扩展,后期的 功能更新,是围绕这 个部分来做的3. 路由框架的特点A android router middleware that help app navigating to activities and custom services.ARouter 是 Android 平台中对页面、服务提供路由功 能的中间件,提

3、倡简单且够用。8优势一直接解析URL路由& 解析参数并赋值优势五提供Ioc容器优势二支持多模块项目优势七灵活的降级策略优势四允许自定义拦截器优势六映射关系自动注册优势三支持InstantRun一、为什么需要路由框架9二、技术方案三、最佳实践四、未来开发计划目录1CompilerAPIRoute ProcessorIntercCepotmorpPilreorcessorAutowire ProcessorLogistics CenterWare HouseThreadLogExceptionLauncherServiceCallbackTemplateClass Toolbootstrappin

4、gExtensibilityAPIInterceptor Service RouteSimple & enough页面注册:注解&注解处理器编译期处理被注解标注的类,不使用反射运行期处理注解,大量运用反射1注解处理器扫出被标注的类文件按照固定的命名格式生成映射文件初始化的时候通过固定包名加载映射文件页面注册:注解&注解处理器按照不同种类的源文件分类页面注册:注解&注解处理器加载:分组管理,按需加载模块1模块2模块3模块4root1group1group2intercepto r1provider1intercepto r2provider2intercepto r3provider3inter

5、ceptor4provider4root3group6root2group3group4group5root4group7group8group9group10root2root1root3root4intercepto r1intercepto r3intercepto r2intercepto r4provider1provider2provider3provider4加载:分组管理,按需加载拦截器拦截 器1AB拦截器2拦截器3拦截器拦截 器35InstantRun兼容Gradle Plugin Android SDK= 2.3.0= 21getDexFileDirectorySplitA

6、pk 21getDexFileDirectorygetDexFileDirectory依赖注入的实现编译期扫出需要自动装配的字段把自动装配的字段注册在映射文件中跳转的时候按照预先的配置从URL中提取参数,并按照类型放入Intent中反射拿到ActivityThread类,调用它的currentActivityThread方法,拿到当 前的ActivityThread实例反射替换ActivityThread实例中的字段mInstrumentation覆写Instrumentation的newActivity方法,在Activity实例化的时候,通过 反射把Intent预先存好的参数值写入到需要自

7、动装配的字段中依赖注入的实现编译期扫出需要自动装配的字段把自动装配的字段注册在映射文件中跳转的时候按照预先的配置从URL中提取参数,并按照类型放入Intent中目标页面在初始化的时候调用ARouter.inject(this)ARouter会查找到编译期为调用方生成的注入辅助类实例化辅助类之后,调用其中的inject方法完成字段的赋值依赖注入的实现一、为什么需要路由框架2二、技术方案三、最佳实践四、未来开发计划目录页面跳转从外部导航到内部页面从外部导航到内部页面从外部导航到内部页面从外部导航到内部页面处理登录逻辑: 拦截器的运用ADCB登录页来源页面登陆拦截器标识目标页面信息: 配置extra参数标识目标页面信息: 配置extra参数模块间通信解耦:控制反转模块间通信解耦:控制反转模块间通信解耦:控制反转模块间通信解耦:控制反转解决运行期动态修改路由的问题:解决降级问题 :一、为什么需要路由框架3二、技术方案三、最佳实践四、未来开发计划目录3插件化的支持现在使用的方案需要去dex文件中拿到指定包 名下的类,但是插件化之后,很多插件化方 案都会对dex进行操作,导致dex位置变动, 常规方案无法找到dex文件,不能实现映射文 件的初始化生成映射关系文档目前映射关系的保存比较复杂,不同类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论