美文网首页
Arouter 注解

Arouter 注解

作者: 嗯哼嗯哼嗯哼嗯哼 | 来源:发表于2019-12-10 09:59 被阅读0次

    Arouter 注解

    Route

    @Route是Arouter中大家最常用的注解

    public @interface Route {
        String path();
        String group() default "";
        String name() default "";
        int extras() default Integer.MIN_VALUE;
        int priority() default -1;
    }
    
    

    再介绍下Warehouse,主要是装载了各种映射关系,比较简单

    // 装载了所有的分组映射类,key是分组名,value是group映射的类名
    static Map<String, Class<? extends IRouteGroup>> groupsIndex = new HashMap<>();
    // 装载了所有的直接映射关系,各个分组内的详细的映射关系,value是path,value是RouteMeta
    static Map<String, RouteMeta> routes = new HashMap<>();
    
    // 装载了所有的服务提供者的映射,value是IProvider对应的class,value是对应的服务提供者,所以IProvider是单例,每一个类只有一个value
    static Map<Class, IProvider> providers = new HashMap<>();
    //服务提供者IProvider的映射,key是类名,value是RouteMeta
    static Map<String, RouteMeta> providersIndex = new HashMap<>();
    
    // 拦截器的映射,key为拦截器Interceptor的优先级,用的是UniqueKeyTreeMap,不允许有相同优先级的拦截器
    static Map<Integer, Class<? extends IInterceptor>> interceptorsIndex = new UniqueKeyTreeMap<>("More than one interceptors use same priority [%s]");
    //拦截器IInterceptor的列表
    static List<IInterceptor> interceptors = new ArrayList<>();
    

    里面有RouteMeta类的使用,下面在详细分析下RouteMeta

    private RouteType type;         // 路由类型,有ACTIVITY,FRAGMENT,PROVIDER等
    private Element rawType;        // 路由的原始类型
    private Class<?> destination;   // 目标类
    private String path;            // Path 
    private String group;           // Group 
    private int priority = -1;      // 优先级,值越小优先级越高
    private int extra;              // 可以用于做一些是否需要登陆需求,
    private Map<String, Integer> paramsType;  // 参数类型
    private String name;//name
    
    private Map<String, Autowired> injectConfig;  // 缓存inject配置
    

    RouteMeta对@Route注解进行解析后再封装的对象,在@Route里面配置的值都会解析成RouteMeta的属性

    相关文章

      网友评论

          本文标题:Arouter 注解

          本文链接:https://www.haomeiwen.com/subject/ltaowctx.html