1.使用了AutoService,autoService使用了代理模式,autoService会在各个是具体实现的接口接口模块下生成一个这个文件,完成装在,模块注入
2.Router实际上就是利用注解,使用javapoet的apt技术在代码运行时自动编译代码,使用@ARouter(path=“/app/MainActivity”)在类上面注解,在模块之间进行跳转时,是取出app作为gruop,当项目中有很多module,每个module都会有一个组,每个组下面会有很多activity的业务代码,利用javapoet生成
这是javapoet生成的组文件,key是每个moudle的名字,value是相对应的activity的名字
javapoet生成的每个activity的类文件对应的path,key是跳转的路径,value是对应的Routerbean
在跳转的时候,根据group找到每个path,根据key找到对应的routerbean,跳转的时候取出routerBean对应的类,使用startActivity(new Intent())来进行跳转的
传递参数,会使用javapoet生成对应的parameter对应的文件,在属性上面使用@Parameter(name ="/user/getUserInfo")这个注解,生成下面对应的文件
navigation实际上是利用了bundler类进行跳转的,最终的跳转
RouterBean routerBean = loadPath.getPathMap().get(path);
if (routerBean!=null) {
switch (routerBean.getTypeEnum()) {
case ACTIVITY:
Intent intent =new Intent(context,routerBean.getMyClass());
intent.putExtras(bundleManager.getBundle());
context.startActivity(intent);
break;