汇总篇章:
简介
组件化被越来越多的Android项目采用,而作为组件化的基础——路由也是重中之重,如果说组件化是肢体,那么路由就是缝合各个组件的筋脉,废话不多说,既然重中之重,那么从源码层次了解ARouter的设计,以及借鉴ARouter的设计来设计自己组件中的ARouter
源码总线
ARouter的源码分析的分析路线,就顺着使用顺序分成:
- 第一步:添加页面注解
- 第二步:初始化ARouter的SDK
- 第三步:发起路由操作
- 第四步:跳转过程监听和参数解析
,来逐步对ARouter分析
依赖这里就附上官网链接:https://github.com/alibaba/ARouter/blob/master/README_CN.md
第一步:添加页面注解
// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
...
}
这一步,由于这步处理依赖基础配置等,故我们在第四步的参数解析里面展开处理
第二步:初始化ARouter的SDK
ARouter.init(mApplication);
我们先从ARouter的初始化方法init这个入口开始分析ARouter的分析之旅
/**
* Init, it must be call before used router.
*/
public static void init(Application application) {
/**
* hasInit避免多次初始化
*/
if (!hasInit) {
logger = _ARouter.logger;
_ARouter.logger.info(Consts.TAG, "ARouter init start.");
/**
* 初始化_ARouter实际实现类
*/
hasInit = _ARouter.init(application);
if (hasInit) {
_ARouter.afterInit();
}
_ARouter.logger.info(Consts.TAG, "ARouter init over.");
}
}
#####实现类_ARouter的init方法
protected static synchronized boolean init(Application application) {
mContext = application;
LogisticsCenter.init(mContext, executor);
logg