前言
什么是ARouter?阿里巴巴官方解释是:Android平台中对页面、服务提供路由功能的中间件。那又是什么鬼,有啥功能,什么场合适合使用?官方给的说明是:
一、功能介绍
1、支持直接解析标准URL进行跳转,并自动注入参数到目标页面中
2、支持多模块工程使用
3、支持添加多个拦截器,自定义拦截顺序
4、支持依赖注入,可单独作为依赖注入框架使用
5、支持InstantRun
6、支持MultiDex(Google方案)
7、映射关系按组分类、多级管理,按需初始化
8、支持用户指定全局降级与局部降级策略
9、页面、拦截器、服务等组件均自动注册到框架
10、支持多种方式配置转场动画
11、支持获取Fragment
二、典型应用
1、从外部URL映射到内部页面,以及参数传递与解析
2、跨模块页面跳转,模块间解耦
3、拦截跳转过程,处理登陆、埋点等逻辑
4、跨模块API调用,通过控制反转来做组件解耦
好了,这些理论啥的我就不说了,具体也可以去官方地址查看:https://github.com/alibaba/ARouter
接下来我们来看看怎么使用,一步一步来
使用说明
1、在project gradle里面添加
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0' //推荐是2.3以上
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' //路由需要
}
}
2、在 app 和 module 的 gradel 添加依赖
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [ moduleName : project.getName() ]
}
}
}
}
dependencies {
// 替换成最新版本, 需要注意的是api
// 要与compiler匹配使用,均使用最新版可以保证兼容
compile 'com.alibaba:arouter-api:1.2.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.1.0'
...
}
3、新建两个module(lib),然后让app都依赖这两个module
dependencies {
compile 'com.alibaba:arouter-api:1.2.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.1.0'
//添加下面两个依赖
compile project(':module1')
compile project(':module2')
}
4、在两个module里面都新建一个activity,目的是测试模块化跳转。实验证明,只要app依赖了这两个module,module之间不需再互相依赖就可以实现从module1跳转到module2 。
//添加注解,path必须为 /XX/OO 的形式
@Route(path = "/module1/main")
public class Module1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_module1);
String data = getIntent().getStringExtra("data");
Toast.makeText(this, "传递的参数:" + data, Toast.LENGTH_LONG).show();
}
} |