ARouter 是阿里巴巴自研路由框架,主要解决组件间、模块间的界面跳转问题。
由于公司项目重构,决定将功能模块化。所以使用了ARouter。
下面来记录一下ARouter的基本使用。
ARouter的基本配置
gradle依赖配置
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
}
dependencies {
...
compile 'com.alibaba:arouter-api:?'//最新的版本代替
annotationProcessor 'com.alibaba:arouter-compiler:?'//最新的版本代替
}
注意!
上面的gradle依赖配置是说在你的项目内除 library 外都要加上。
在 Application 里初始化 ARouter
public void onCreate() {
super.onCreate();
...
if (isDebug(this)) {
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(this);
}
public static boolean isDebug(Application application) {
try {
ApplicationInfo info = application.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
e.getStackTrace();
}
return false;
}
官方文档说 openLog 和 openDebug 要在init 之前,不然将无效。
添加注解
@Route(path = "/test/activity")
public class MyActivity extend AppCompatActivity {
...
}
这里需要注意一下 :
#路径至少需要有两级,/xx/xx。
#第一级——group 是不能重复的。
发起路由操作
ARouter.getInstance().build("/test/activity").navigation();
以上,就可以实现模块间的跳转。
基本的参数传递实现
ARouter.getInstance()
.build("test/activity")
.with(new Bundle())
.withString(key, value)
.withInt(key, value)
...
.withSerializable(key, value)
.withParcelable(key, value).navigation();
第一篇博,再接再厉。