模块间跳转
使用阿里开源的框架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