ARouter的分析

1. 注册获取项目中的注解类和字段

   函数分析

   

2. 注册的内容有哪些? 

      (1) IRouteRoot、  (2) IProviderGroup 、(3) IInterceptorGroup 

3.  LogisticsCenter的init()方法做了什么
     ClassUtils.getFileNameByPackageName(mContext,ROUTE_ROOT_PACKAGE);

     根据包名读取对应的文件路径并且存储在Set<String> routerMap中

     通过sp的技术存储在本地,下次初始化时会从缓存中读取,同时会记录一个版本号,

      当版本号更新时,会重新调用ClassUtils.getFileNameByPackageName()读取文件路径

      之后,遍历这个routerMap,根据文件的后缀名,“groupsIndex”, "interceptorsIndex", "providersIndex"分别装载进对应的容器IRouteRoot、IInterceptorGroup、IIProviderGroup。

 4. LogisticsCenter的completion方法

     Completion the postcard by route metas 

     RouteMeta routeMeta = Warehouse.routes.get(postcard.getPath());

     

5. ARouter里有哪些服务? 

    1 . AutowiredService, 2. ClassLoaderService, 3. DegradeService, 4. InterceptorService, 

     5. PathReplaceService  6. PrretreatmentService 7. SerializationService 

     public interface AutowiredService extends IProvider { 

             void autowire(Object instance); 

     }

    public interface ClassLoaderService extends IProvider { 

             Class<?> forName(); 

     }

     public interface InterceptorService extends IProvider { 

           void doInterceptions(Postcard postcard, InterceptorCallback callback); 

}

6  ARouter的核心数据结构

       RouterMeta 

       RouteType type;  路由类型,标识跳转到哪些类型、获取哪些服务对象、或者方法

       RouteType:   路由类型

            ACTIVITY、SERVICE、PROVIDER、CONTENT_PROVIDER、BROADCAST、

 METHOD、FRAGMENT、UNKNOWN。

       

7、doInject() 递归注入

8 、ARouter的数据层次关系

        第一层 IRouteRoot :  Map<String, Class<? extends IRouteGroup>> routes 

        第二层 IRouteGroup : Map<String, RouteMeta> atlas

        第三层RouteMeta :   RouteType type 、 Class<?> destination 、Map<String, Integer> paramsType。

       String group、String path。 

     
      

     

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值