从0到1实现Android路由
xingfeng_coder
路漫漫其修远兮,吾将上下而求索
Gitbook地址:https://xingfeng.gitbook.io/hust
简书地址:https://www.jianshu.com/u/57f41372c68e
展开
-
从0到1实现一个Android路由(2)——URL解析器
在从0到1实现一个路由(1)——初探路由中,介绍了一个五脏俱全的路由例子,路由是通过URL到达页面,那么URL解析器是个很重要的步骤,负责解析、跳转、拦截、传参等等。所谓URL解析器,可以看成是URL和Intent的映射,因为Android启动页面只能通过Intent来跳转,不论是显试调用还是隐式调用,归根结底是一个Intent。URL解析器改造在上个例子的基础上,进行改造,将URL解析器作...原创 2019-04-21 12:27:45 · 986 阅读 · 0 评论 -
从0到1实现一个Android路由(3)——APT收集路由
之前的例子中,关于url和Activity之间的关系,是写死在一个Map中的,可以看做是一个静态路由。随着项目规模的扩大,这样一个个的手写那张表是个工作量比较大的工作,那么有什么简单的方式可以实现自动化呢?答案是APT(Annotation Processing Tool)。原理是在编译时收集注解信息,然后生成源代码或进行某些操作。对于路由,做法可以是给要跳转的Activity声明注解,指定其跳...原创 2019-04-21 12:29:22 · 834 阅读 · 0 评论 -
从0到1实现一个Android路由(4)——多模块的APT收集路由
在从0到1实现一个Android路由(3)——APT收集路由中,已经实现了在同一个module中收集路由,当引入了一个other_module时,发现并没有收集到这个信息,这是咋回事呢?以前需要怎么解决呢?这就是本篇文章的由来。other_module模块other_module其实很简单,就一个Activity,用@Path("/otherMoudleActivity")注解,其和app模块...原创 2019-04-21 12:30:45 · 956 阅读 · 0 评论 -
从0到1实现一个Android路由(5)——对Kotlin模块的支持
在从0到1实现一个Android路由(3)——APT收集路由中,提到过Processor处理Kotlin类时,无法得到注解从而路由表不正确,本章将介绍如何解决这个问题。参考自阿里的ARouter。解决方案其实解决方案很简单,修改在有用注解标注的Kotlin写的Activity的module的build.gradle。修改点有几点:添加apply plugin:‘kapt’将annota...原创 2019-04-21 12:32:04 · 477 阅读 · 0 评论 -
从0到1实现一个Android路由(6)——拦截请求再跳转
在从0到1实现一个Android路由(2)——URL解析器中,提到过请求拦截,其中有个常见的场景是某个页面是需要登录状态的,那么首先要调到登录页,完成了登录之后再跳转到路由页面,但通常登录页都是跳转到主页面的,这该怎么实现呢?上篇文章中没有解决这个问题,本文主要来解决这个问题。解决这个问题的核心是Hook,接管startActivity(),进行偷梁换柱。因为所有的跳转最终都是通过startAc...原创 2019-04-21 12:33:39 · 1561 阅读 · 0 评论 -
从0到1实现一个Android路由(1)——初探路由
Android路由什么是路由?最初接触路由是在大学计算机网络中,网络层IP报文传输会涉及一个路由表的概念,路由表由源IP、目的IP组成,起始就是一个映射表。Android路由也是一个映射表,映射什么呢?这里先类比一下,如果把手机类比于浏览器,那么每个app就可以类比于一个个的网站,比如百度、头条等等,那么每个app的一个页面就可以类比于一个个网站里面的页面,浏览器的每个页面由url定义,给不同...原创 2019-04-15 13:54:51 · 3259 阅读 · 0 评论