Android模块化开发--记录2

模块间跳转

使用阿里开源的框架ARouter
在每个业务组件module中添加配置依赖

//ARouter。javaCompileOptions是每必须在每个gradle中引入,否则编译失败。
javaCompileOptions {
    annotationProcessorOptions {
        arguments = [AROUTER_MODULE_NAME: project.getName()]
    }
}
//ARouter路由。arouter-api的作用是引入arouter,只需要在app和baselibrary中引入
api "com.alibaba:arouter-api:$rootProject.arouterApi"
//arouter-compiler是通过arouter依赖注入生成一些额外的的代码,必须在每个gradle中引入,否则没法生成依赖的代码,导致跳转失败;
annotationProcessor "com.alibaba:arouter-compiler:$rootProject.arouterCompiler"

界面中跳转
首先:

// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
    ...
}

然后:

// 1. 应用内简单的跳转(通过URL跳转在'进阶用法'中)
ARouter.getInstance().build("/test/activity").navigation();

// 2. 跳转并携带参数
ARouter.getInstance().build("/test/1")
            .withLong("key1", 666L)
            .withString("key3", "888")
            .withObject("key4", new Test("Jack", "Rose"))
            .navigation();

界面间跳转的时候,接收ARouter传递过来的参数,在接收界面onCreate()中添加:

// 接收传递过来的参数,调用 inject 方法,这样使用 @Autowired 的会自动解析
ARouter.getInstance().inject(this);

在BaseApplication中初始化ARouter

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

本工程通用库whappLib

有一些通用的东西只是本工程用到的,如RouterPath,建一个lib依赖通用库,本项目的module依赖whappLib。

组件的生命周期管理

https://www.jianshu.com/p/180ec7739c1e
或者第三方库
https://github.com/hufeiyang/Android-AppLifecycleMgr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值