这一篇主要介绍 ARouter 的 API.
- 注解的使用
@Autowired
// 声明自动注入参数或者服务的注解, 例如 : @Autowired(name = "boy")
// name string 类型, 标示注入的参数名称或者服务名称
// required boolean 类型, 标示是否必须, 默认 false, 如果是 true, 并且 value 为空, 则抛出错误
@Interceptor
// 声明拦截器, 必须实现com.alibaba.android.arouter.facade.template.IInterceptor 接口
// priority int 类型, 标示拦截器优先级
下面是最核心的注解了 @Route
@Route
// path string 类型, 标示路径
// group string 类型, 标示分组
// extras int 类型, 标示一些状态(名字有点奇怪..感觉叫 flags 更合适)
// priority int 类型, 标示优先级
- com.alibaba.android.arouter.launcher.ARouter.java
这个类其实就是 com.alibaba.android.arouter.launcher._ARouter的代理类
接下来我们逐个看下ARouter这个类的主要方法
// ARouter 初始化
public static void init(Application application)
// ARouter的单例方法
public static ARouter getInstance()
// 打开调试, 使用InstantRun的时候,需要打开该开关,上线之后关闭,否则有安全风险
public static synchronized void openDebug()
// 依赖注入, 用来注入参数和 service, 结合Autowired 注解使用
// 一般在onCreate方法中使用, ARouter.getInstance().inject(this);
public void inject(Object thiz)
// 都是根据参数返回对应的Postcard
public Postcard build(String path)
public Postcard build(String path, String group)
public Postcard build(Uri url)
// 返回 service
public <T> T navigation(Class<? extends T> service)
// 主要用来启动 activity, requestCode是startActivityForResult用到的
public Object navigation(Context mContext, Postcard postcard, int requestCode, NavigationCallback callback)
- com.alibaba.android.arouter.facade.Postcard.java
这个类是主要用来查找具体实现并传递参数. 继承了RouteMeta, 包含了注解内的一些信息.
ARouter的使用基本上就介绍这么多了, 还是可以发掘出一些奇怪的用法. 准备开始对 ARouter 的源码进行分析了