1.ARouter原理解析
1.通过Apt技术,APT的作用是在编译阶段扫描并处理代码中的注解,然后根据注解生成Java文件,把所有注解@Router路由path和对应的RouteMeta(封装了Activity.class和path,group)通过分组IRouteGroup的类保存到map集合中;
2.Arouter通过navigation()方法,根据postcard(明信片)寻找到要跳转的目标地址(class),使用Intent跳转到对应的Activity;
2.ButterKnife原理
1.通过 APT 和 JavaPoet 的规则在编译扫描处理代码中的注解,并生成Activity_ViewBinding类信息;
2.ButterKnife.bind(this)方法,有2个作用
第一:获取顶级的DecorView;
第二:通过bind(target, sourceView)方法,由ClassLoader 通过“Activity_ViewBinding”字符转去获取Activity_ViewBinding.class文件,然后通过反射获取Activity_ViewBinding的构造函数;
第三:通过反射,用构造函数实例化Activity_ViewBinding对象;
第四:然后在Activity_ViewBinding的构造方法中通过DecorView的findviewbuid方法会实现所有注解的view的初始化;
最后实现了Activity中的所有注解view的初始化;