ARouter解析之基本使用

ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。

Github:https://github.com/alibaba/ARouter

Google提供的原声路由主要是通过Intent,可以分成显示和隐式两种。显示的方案会导致类之间的直接依赖问题,耦合严重;隐式Intent需要的配置清单中统一声明,首先有个暴露的问题,另外在多模块开发中协作也比较困难。只要调用startActivity后面的环节我们就无法控制了,在出现错误时无能为力,而ARouter可以在跳转过程中进行拦截,出现错误时可以实现降级策略。

ARouter的优势

  • 直接解析URL路由,解析参数并赋值
  • 支持多模块项目
  • 支持InstantRun
  • 允许自定义拦截器
  • ARouter可以提供IoC容器
  • 映射关系自动注册
  • 灵活的降级策略

ARouter配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
android {
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
}

dependencies {
implementation 'com.alibaba:arouter-api:1.4.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.1'
}

ARouter初始化

1
2
3
4
5
6
7
8
9
10
// 打开日志并打印堆栈
ARouter.openLog();
// 调试模式不是必须开启,但是为了防止有用户开启了InstantRun,但是忘了开调试模式,导致无法使用ARouter
// 如果使用了InstantRun,必须在初始化之前开启调试模式,但是上线前需要关闭
// InstantRun仅用于开发阶段,线上开启调试模式有安全风险,可以使用BuildConfig.DEBUG来区分环境
ARouter.openDebug();
// 初始化ARouter
ARouter.init(getApplication());
// 关闭ARouter
// ARouter.getInstance().destroy();

Activity页面跳转及传参

1
2
3
4
5
ARouter.getInstance()
.build("/activity/test")
.withString("name", "Joe.Ye")
.withInt("age", 25)
.navigation();

startActivityForResult

1
2
3
4
5
ARouter.getInstance()
.build("/activity/test")
.withString("name", "Joe.Ye")
.withInt("age", 25)
.navigation(this, REQUEST_CODE);

跳转动画

(1)旧版动画

1
2
3
4
ARouter.getInstance()
.build("/activity/test")
.withTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom)
.navigation(this);

(2)新版动画

1
2
3
4
5
6
7
8
9
10
11
if (Build.VERSION.SDK_INT >= 16) {
ActivityOptionsCompat compat = ActivityOptionsCompat.
makeScaleUpAnimation(v, v.getWidth() / 2, v.getHeight() / 2, 0, 0);

ARouter.getInstance()
.build("/activity/test")
.withOptionsCompat(compat)
.navigation();
} else {
Toast.makeText(this, "API < 16,不支持新版本动画", Toast.LENGTH_SHORT).show();
}

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :