arouter笔记

流程

  1. 初始化

    ARouter内部有一个_ARouter类,实际初始化是_ARouter做的

    ARouter调用_ARouter的初始化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /**
    * Init, it must be call before used router.
    */
    public static void init(Application application) {
    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实际初始化

protected static synchronized boolean init(Application application) {
mContext = application;
//LogisticsCenter初始化
LogisticsCenter.init(mContext, executor);
logger.info(Consts.TAG, “ARouter init success!”);
hasInit = true;
mHandler = new Handler(Looper.getMainLooper());

// It's not a good idea.
// if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
//     application.registerActivityLifecycleCallbacks(new AutowiredLifecycleCallback());
// }
return true;

}
```
然后_ARouter内部又调用LogisticsCenter初始化