面向火箭编程之ButterKnife 原理

207 阅读1分钟

先来两个概念:

APT:英文全名(Annotation Processor Tool),即:注解处理器。它是 javac 的一个工具。 Annotation processing是在编译阶段执行的,它的原理就是读入Java源代码,解析注解,然后生成新的Java代码。新生成的Java代码最后被编译成Java字节码。

IOC,控制反转(Inversion of Control,英文缩写为IOC),其实就是反射加注解。

由于它是在编译时对注解进行解析完成相关代码的生成,所以在项目编译时会略耗时,但不会影响运行时的性能。

原理总结:

绑定的时候传入XXActivity类,通过反射 Class cls = activity.getClass() 获得Class对象, Class bindingClass = cls.getClassLoader().loadClass(clsName + "_ViewBinding") , constructor = (Constructor<? extends Unbinder>) bindingClass.getConstructor(cls, View.class), constructor.newInstance(target, source); 编译时候通过APT技术,生成 XXActivity_ViewBinding这个继承自 Unbinder的辅助类,里面就是具体的 findViewById得到对应的View。

参考文章:

1.使用:blog.csdn.net/zyw0101/art…

2.原理:www.jianshu.com/p/39fc66aa3…