美文网首页Android开发
Android路由ARoute使用

Android路由ARoute使用

作者: 人世看客 | 来源:发表于2022-07-12 18:45 被阅读0次

    一、先导入ARoute,这里分为两种情况,java和kotlin

    在module(或library)中的build.gradle添加如下代码

    • java配置
    android {
      ....省略...
    
      defaultConfig {
        ....省略...
    
        //java路由配置
        javaCompileOptions {
                annotationProcessorOptions {
                    arguments = [AROUTER_MODULE_NAME: project.getName()]
                }
         }
         ....省略...
      }
    
    }
    dependencies{
        //java路由导入
        implementation 'com.alibaba:arouter-api:1.5.2'
        annotationProcessor 'com.alibaba:arouter-compiler:1.5.2'
    }
    
    • kotlin配置
    android {
      ....省略...
    
      defaultConfig {
        ....省略...
    
        //kotlin 路由配置
            kapt {
                arguments {
                    arg("AROUTER_MODULE_NAME", project.getName())
                }
            }
         ....省略...
      }
    
    }
    dependencies{
        //kotlin路由导入
        implementation 'com.alibaba:arouter-api:1.5.2'
        kapt 'com.alibaba:arouter-compiler:1.5.2'
    }
    

    注意:在用到此框架的library库或者module中,都需要添加配置

    二、初始化

    官方文档推荐在Application中初始化

    class MyApplication: Application() {
    
        override fun onCreate() {
            super.onCreate()
    
            if (BuildConfig.DEBUG) {    // 这两行必须写在init之前,否则这些配置在init过程中将无效
                ARouter.openLog();     // 打印日志
                ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
            }
           ARouter.init(this); // 尽可能早,推荐在Application中初始化
        }
    
    }
    

    三、具体使用

    1.在activity上添加如下注解@Route(path = "/app/MainActivity"),"/app/MainActivity"是自定义的路劲,注意的是此路劲至少需要有两级/xxx/xxx,

    @Route(path = "/app/MainActivity")
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }
    }
    

    2.跳转到上述页面方法

    // 1. 应用内简单的跳转(通过URL跳转在'进阶用法'中)
    ARouter.getInstance().build("/app/MainActivity").navigation();
    
    // 2. 跳转并携带参数
    ARouter.getInstance().build("/app/MainActivity")
                .withLong("key1", 666L)
                .withString("key3", "888")
                .withObject("key4", new Test("Jack", "Rose"))
                .navigation();
    

    3.注意:取值与平时一样用intent就行,另外还有些高级用法,可以去ARoute官网,这里就不一 一介绍了

    四、遇到的一些坑

    1、不能在kotlin module中添加ARoute的java引入和配置,同理反过来java module中添加ARoute的kotlin引入和配置也不行,虽然运行不会报错,但是会提示找不到路劲
    2、如过还是遇到找不到路劲问题,可以参考上面代码,是否有漏写

    相关文章

      网友评论

        本文标题:Android路由ARoute使用

        本文链接:https://www.haomeiwen.com/subject/kcuabrtx.html