路由框架ARouter最全源码解析
ARouter是2017年阿里巴巴开源的一款Android路由框架,官方定义:
ARouter是Android平台中对页面,服务提供路由功能的中间件,提倡简单且够用
有下面几个优势:
1.直接解析URL路由,解析参数并赋值到对应目标字段的页面中;
2.支持多模块项目;
3.支持InstantRun;
4.拦截器策略,允许自定义;
5.提供IoC容器,控制反转;
6.映射关系自动注册;
7.灵活的降级策略.
通过解析这个框架会学习或者涉及到下面的技术:
1.scheme,url的统一管理跳转
2.APT,编译器注解处理技术,自动注册使用的就是编译期间生成映射文件来自动注册
3.反射,比如服务的实例化
4.IoC与依赖注入,比如服务和参数由框架进行自动赋值,解放用户的双手
5.拦截器的思想,AOP的设计思想
6.多线程思想
7.降级策略
8.服务接口设计思想,方便扩展
针对上面提到的技术点,中间由于项目忙的关系,断断续续做了一个月才算把大体内容进行了梳理,做了一些分享:
ARouter解析一:基本使用及页面注册源码解析
ARouter解析二:页面跳转源码分析
ARouter解析三:URL跳转本地页面源码分析
ARouter解析四:发现服务和Fragment
ARouter解析五:IoC与依赖注入
ARouter解析六:拦截器
ARouter解析七:降级策略
总结起来与技术点的对应关系:
解析一,二涉及到技术点1,2
解析三涉及到技术点1
解析四涉及到技术点1,2,3,8
解析五涉及到技术点2,3,4
解析六涉及到技术点1,2,5,6
解析七涉及到技术点1,2,7,8
很感谢开源工作者的艰辛工作,开源精神万岁!
如果对大家能提供一点帮助,也是我的荣幸,谢谢!
路由框架ARouter最全源码解析相关推荐
- 微服务开源框架TARS的RPC源码解析 之 初识TARS C++服务端
作者:Cony 导语:微服务开源框架TARS的RPC调用包含客户端与服务端,<微服务开源框架TARS的RPC源码解析>系列文章将从初识客户端.客户端的同步及异步调用.初识服务端.服务端的工 ...
- Android Glide图片加载框架(二)源码解析之into()
文章目录 一.前言 二.源码解析 1.into(ImageView) 2.GlideContext.buildImageViewTarget() 3.RequestBuilder.into(Targe ...
- Android Glide图片加载框架(二)源码解析之load()
文章目录 一.前言 二.源码分析 1.load() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源 ...
- Android Glide图片加载框架(二)源码解析之with()
文章目录 一.前言 二.如何阅读源码 三.源码解析 1.with() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图 ...
- Java集合框架之三:HashMap源码解析
Java集合框架之三:HashMap源码解析 版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! HashMap在我们的工作中应用的非常广泛,在工作面试中也经常会被问到,对于这样一个重要的集 ...
- Java集合框架之 Java HashMap 源码解析
继上一篇文章Java集合框架综述后,今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 签名(signature) public class HashMap<K,V> ...
- PHP框架设计之 ThinkPHP5 源码解析
ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,也是国内使用最为广泛的国产框架.诞生于2006年,历经FCS0.6.0到 ThinkPHP 0.9.5,历经1.0到3.0的发展.2 ...
- [源码解析] 深度学习分布式训练框架 horovod (11) --- on spark --- GLOO 方案
[源码解析] 深度学习分布式训练框架 horovod (11) - on spark - GLOO 方案 文章目录 [源码解析] 深度学习分布式训练框架 horovod (11) --- on spa ...
- [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark
[源码解析] 深度学习分布式训练框架 horovod (10) - run on spark 文章目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...
最新文章
- php 操作txt,PHP 从txt文件中读取数据
- 用c语言实现的几个小项目
- 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-tf.keras函数式API-08
- Android 全屏抽屉fragment,NavigationView
- CV Code|计算机视觉开源周报20200504期
- Linux系统文件压缩与备份(5)
- pillow是python的图像处理标准库_Python图像处理库:Pillow 初级教程
- linux tail 命令
- KDD 2022论文合集(持续更新中)
- mac 修改 DNS
- 时间管理经典书籍-《番茄工作法图解》
- 关于控件注册和使用许可问题的解决办法
- 命令可以在linux的安全系统中,什么命令可以在linux的安全系统中完成文件向磁带备份的工作...
- 科林明伦杯哈尔滨理工大学第八届程序设计竞赛——Hrbust-2378 小H的问题(模拟)
- 【示例】《Java程序设计》第二周博文:第二周 计算圆面积
- 净亏损同比扩大162%,万国数据能否学到Equinix的增长秘诀?
- 破坏性程序和计算机病毒的差异,计算机病毒—破坏性程序分析.ppt
- 兔子繁殖问题,兔子有寿命限制
- 日期格式:ddMMyy-hhmmss,格林威治时间转换成北京时间
- 你所不知道的8020法则
热门文章
- STM32外部中断与各通道对应关系
- python封装enclosure
- C语言文件操作解析(二)
- jQuery 之 [ 动画 ]
- autoburn eMMC hacking
- 《JavaScript数据可视化编程》——1.4 用离散图表绘制x/y值
- Redis+Mysql模式和内存+硬盘模式的异同
- 数据存储之属性列表Plist
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- SCOM 2012知识分享-26:分布式部署要点总结