深更半夜写代码 打完游戏来撸一发
最近看同事在做组件化拆分 那么需求来了 如何根据path关闭绑定的act呢? 还是先看看arouter是如何实现跳转的吧 !

简简单单的一句话来实现跳转 以及目标act 如下图

接下来顺着源码走就好了 看看他build的是个什么东西


到这里呢就结束了 build生成的就是一个postcard 别急 这个postcard是有用的
接下来 既然创建了对象就看看他是如何跳转的 还是回到之前的跳转大码 看跳转做了什么?

这里呢就是3个构造器 看看他第三个方法 就出来了我们之前看到的postcard

然后他就巴拉吧啦对数据进行了处理和报错一对判断 这里先不看代码有点多 分2个截图吧 注意标红 后面用到


看过了判断继续跟着navigation走

switch type 我们不需要考虑 他是做类型判断的 主要处理了activity和fragment的区别
到这里我们就看到了 原来他是调用了postcard的这个方法 可以拿到类名 原本是个路径怎么转换成类名的呢 当时很懵逼 不过别急
既然能拿到类名了是吧 那就好解决了 搞起来吧

然后就爆红崩溃了 打印了日志 getName为空 postcard对象有 为啥destination为空啊!
明明我是在build之后啊 跳转不也是这么做的么 回到源码重新看 就是我上面标红的方法


在这里呢 他进行了一个set
因此修改下代码

经过测试最终完成实现 代码没几行 看了源码倒是不少 算是对router的一次加深吧 !
网友评论