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();
}
上一篇 Android插件化之startActivity hook实现登录拦截
下一篇 ARouter错误Failed resolution of ARouter$$Group
目录
文章列表
1 9个基于Java的搜索引擎框架
9个基于Java的搜索引擎框架
2
Android APP之WebView如何校验SSL证书
Android APP之WebView如何校验SSL证书
3
Spring Boot 2.x 整合ActiveMQ时版本引起的问题
Spring Boot 2.x 整合ActiveMQ时版本引起的问题
4
CentOS 7下安装RabbitMQ
CentOS 7下安装RabbitMQ
5
LocalDateTime的增加和减少
LocalDateTime的增加和减少
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。