ARouter解析之基本使用
ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。
Github:https://github.com/alibaba/ARouter
Google提供的原声路由主要是通过Intent,可以分成显示和隐式两种。显示的方案会导致类之间的直接依赖问题,耦合严重;隐式Intent需要的配置清单中统一声明,首先有个暴露的问题,另外在多模块开发中协作也比较困难。只要调用startActivity后面的环节我们就无法控制了,在出现错误时无能为力,而ARouter可以在跳转过程中进行拦截,出现错误时可以实现降级策略。
ARouter的优势
- 直接解析URL路由,解析参数并赋值
- 支持多模块项目
- 支持InstantRun
- 允许自定义拦截器
- ARouter可以提供IoC容器
- 映射关系自动注册
- 灵活的降级策略
ARouter配置
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初始化
// 打开日志并打印堆栈
ARouter.openLog();
// 调试模式不是必须开启,但是为了防止有用户开启了InstantRun,但是忘了开调试模式,导致无法使用ARouter
// 如果使用了InstantRun,必须在初始化之前开启调试模式,但是上线前需要关闭
// InstantRun仅用于开发阶段,线上开启调试模式有安全风险,可以使用BuildConfig.DEBUG来区分环境
ARouter.openDebug();
// 初始化ARouter
ARouter.init(getApplication());
// 关闭ARouter
// ARouter.getInstance().destroy();
Activity页面跳转及传参
ARouter.getInstance()
.build("/activity/test")
.withString("name", "Joe.Ye")
.withInt("age", 25)
.navigation();
startActivityForResult
ARouter.getInstance()
.build("/activity/test")
.withString("name", "Joe.Ye")
.withInt("age", 25)
.navigation(this, REQUEST_CODE);
跳转动画
(1)旧版动画
ARouter.getInstance()
.build("/activity/test")
.withTransition(R.anim.slide_in_bottom, R.anim.slide_out_bottom)
.navigation(this);
(2)新版动画
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();
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/18/basic-usage-of-arouter/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
1
二维码
打赏
海报
ARouter解析之基本使用
ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。
Github:https://github.com/alibaba/ARouter
Google提供的……
文章目录
关闭
共有 0 条评论