Arouter 注解

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> groupsIndex = new HashMap<>();
// 装载了所有的直接映射关系,各个分组内的详细的映射关系,value是path,value是RouteMeta
static Map routes = new HashMap<>();

// 装载了所有的服务提供者的映射,value是IProvider对应的class,value是对应的服务提供者,所以IProvider是单例,每一个类只有一个value
static Map providers = new HashMap<>();
//服务提供者IProvider的映射,key是类名,value是RouteMeta
static Map providersIndex = new HashMap<>();

// 拦截器的映射,key为拦截器Interceptor的优先级,用的是UniqueKeyTreeMap,不允许有相同优先级的拦截器
static Map> interceptorsIndex = new UniqueKeyTreeMap<>("More than one interceptors use same priority [%s]");
//拦截器IInterceptor的列表
static List 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 paramsType;  // 参数类型
private String name;//name

private Map injectConfig;  // 缓存inject配置

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

你可能感兴趣的:(Arouter 注解)