一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦
1.新建一个Android项目 "ARouterDemo"
2.添加依赖和配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | android { defaultConfig { ... javaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] } } } } dependencies { // 替换成最新版本, 需要注意的是api // 要与compiler匹配使用,均使用最新版可以保证兼容 compile 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' ... } // 旧版本gradle插件(< 2.2),可以使用apt插件,配置方法见文末'其他#4' // Kotlin配置参考文末'其他#5' |
3.添加注解
1 2 3 4 5 6 | // 在支持路由的页面上添加注解(必选) // 这里的路径需要注意的是至少需要有两级,/xx/xx @Route(path = "/test/activity" ) public class YourActivity extend Activity { ... } |
4.在Application 中初始化sdk
if (isDebug()) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(mApplication); // 尽可能早,推荐在Application中初始化
5.发起路由操作
1 2 3 4 5 6 7 8 9 | // 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(); |
6.如果发起startActivityForResult() 传入context和requestCode
![](https://img-blog.csdnimg.cn/img_convert/e855d41f9f8d85442ccdf4d632cbce03.png)
执行setResult(12)
转载于:https://www.cnblogs.com/jiayonghua/p/10767571.html