翻翻git之---丰富多样的路由跳转开源库 ARouter

转载请注明出处:王亟亟的大牛之路

有一段时间没更新博客了,最近也没学什么新东西,正好组里小伙在做路由跳转的一个“公共库“,然后正好最近这样的轮子不少,我也就跟着看看,学习一下人家的思路,然后推荐给大家这个库

https://github.com/alibaba/ARouter

分析讲解之前先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android (总有些你用得到的东西,欢迎补issues)


什么是路由跳转?为什么要用路由跳转?

路由跳转

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


案例分析

官方提供了一个demo.apk,下载下来跑了跑,长这样

这里写图片描述

我们跟着demo去看他内部的实现,顺道看下how to use?

初始化:

在你要使用这个库之前,必须初始化,也就是调用

protected static synchronized boolean init(Application application) 

其实这方法长这样,他也没叫你穿Context了,很直白直接叫你传Application,那我们就要在自定义Application里的onCreate里把他给初始化了,不初始化的话会丢一个
throw new InitException("ARouterCore::Init::Invoke init(context) first!");

日志:

内部维护了一个简单的log类:ILogger,也就是一些简单的打日志的那些东西 .d .e .i 这些,主要是为了给予这个类一个状态“是否打印日志“

而是否打印日志,调用

 static synchronized void openLog() 

在内部调用了

logger.showLog(true);

然后就有log了,无论是跳转过程还是拼接过程都可以看到具体内容,便与调试

调试:

因为log已经可以很好的帮你监控跳转行为的各个流程,官方缩写的调试方法更简便,当然首先你得开启

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值