Aroute使用

Aroute使用

Aroute基本使用

你好! 这是Aroute的基本使用

1. 定义

由于公司项目进行了拆分,我司就用上了阿里的这个ARouter框架。对于为啥使用这个框架,我相信很多人知道原因,借用阿里的云栖社区的一段话:我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。这时候如果考虑使用自定义的路由组件就可以解决以上的一些问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。那么我就总结一下ARouter的使用方法

2. 特点

由于公司项目进行了拆分,我司就用上了阿里的这个ARouter框架。对于为啥使用这个框架,我相信很多人知道原因,借用阿里的云栖社区的一段话:我们所使用的原生路由方案一般是通过显式intent和隐式intent两种方式实现的,而在显式intent的情况下,因为会存在直接的类依赖的问题,导致耦合非常严重;而在隐式intent情况下,则会出现规则集中式管理,导致协作变得非常困难。而且一般而言配置规则都是在Manifest中的,这就导致了扩展性较差。除此之外,使用原生的路由方案会出现跳转过程无法控制的问题,因为一旦使用了StartActivity()就无法插手其中任何环节了,只能交给系统管理,这就导致了在跳转失败的情况下无法降级,而是会直接抛出运营级的异常。这时候如果考虑使用自定义的路由组件就可以解决以上的一些问题,比如通过URL索引就可以解决类依赖的问题;通过分布式管理页面配置可以解决隐式intent中集中式管理Path的问题;自己实现整个路由过程也可以拥有良好的扩展性,还可以通过AOP的方式解决跳转过程无法控制的问题,与此同时也能够提供非常灵活的降级方式。那么我就总结一下ARouter的使用方法

3.使用

1.配置app下build.gradle文件

    defaultConfig {
        applicationId "com.example.test"
        minSdk 21
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [ moduleName : project.getName() ]
            }
        }
    }

添加依赖

 implementation 'com.alibaba:arouter-api:1.2.2'
    annotationProcessor 'com.alibaba:arouter-compiler:1.1.3'

2.初始化Aroute
新建applicaiton 初始化aroute

public class BaseApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (isDebug(getApplicationContext())){
            ARouter.openLog();
            ARouter.openDebug();
        }
        ARouter.init(this);
    }


    public static boolean isDebug(Context context) {
        try {
            ApplicationInfo info = context.getApplicationInfo();
            return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
        } catch (Exception e) {
            return false;
        }
    }
}

注意在AndroidMainfest.xml配置application

<application
        android:name=".base.BaseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Test">

3.配置跳转基本类

/**
 * time 2022/4/1
 * sen
 * Aroute跳转基本类
 */
public class Rroute {
    public static final String MAIN="/main/main";//首页
    public static final String ONE="/module/one";//模组首页
    public static final String TWO="/test/two";//测试首页
}

4.新建对应activity
对应activity添加path

@Route(path = Rroute.TWO)
@Route(path = Rroute.ONE)

5.实现跳转

      ARouter.getInstance().build(Rroute.ONE).navigation();

编译即可,基本的跳转就是这样了

6.传递数据
发送数据,可以选择发送类型

ARouter.getInstance().build(Rroute.TWO)
                        .withString("name","sen")
                        .withInt("age",25)
                        .withParcelable("data",new TestParcelable("sen",16))
                        .navigation();

目标类
利用Autowired注解

@Autowired
    String name;

    @Autowired
    int age;

    @Autowired
    TestParcelable data;

利用inject初始化传输的数值

        ARouter.getInstance().inject(this);
        textView.setText(name+"年龄"+age+"data"+data.getAge());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值