ARouter使用
2019-07-01 本文已影响14人
talon_ok
ARouter使用
简介
ARouter
是一款阿里的路由框架,通过注解映射页面跳转关系,在组件化的项目架构中有着非常强大的解耦能力。官方地址:https://github.com/alibaba/ARouter
使用步骤
一、在app的build.gradle中添加代码:
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
}
dependencies {
// Replace with the latest version
compile 'com.alibaba:arouter-api:?'
annotationProcessor 'com.alibaba:arouter-compiler:?'
...
}
坑一:我根据gradle的提示,使用的是:com.alibaba:arouter-api:1.3.1
,要使用moduleName: project.getName()
才不会出现以下错误:
Router::Compiler >>> No module name, for more information, look at gradle log.
而github上的步骤却是AROUTER_MODULE_NAME: project.getName()
.
坑二:每个module中都应该添加配置
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
坑三:如果是每个模块相互引用,需要在每个模块的build.gradle中添加
annotationProcessor:com.alibaba:arouter-compiler:1.1.4
二、在Application中进行初始化
ARouter.init(mApplication);
三、定义接收方法
@Route(path = "/test/activity") //接收的路径
public class Main2Activity extends AppCompatActivity {
@Autowired
public String key; //接收的参数名
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
ARouter.getInstance().inject(this); //该步骤不添加的话,可正常跳转,却不能接收到参数
Log.d("===", "key:" + key);
}
}
四、定义发送方法
ARouter.getInstance().build("/test/activity")
.withString("key", "hello")
.navigation();
实际应用
在实际的代码中,我们可以将有些可以抽离出来的放在公共类中
比如:
- 将路由名
/test/activity
放在常量类方便管理 - 将
ARouter.getInstance().inject(this)
放在BaseActivity
中的onCreate
中 - 将
Application
中的初始化放在BaseModule
的Application
中。
联系
遇到问题或想持续学习,请关注公众号“Android唐浮”