美景總是好的
這一篇主要介紹 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 的源碼進行分析了