- ButterKnife.bind(this)方法调用时,当前类引用会传给ButterKnife框架,内部的注解处理器会遍历当前类,拿到其中注解
image.png
image.png
这里拿到一个Constructor
2.,根据这些注解信息javaPoet会生成一个.Java文件,就是通过当前activity的名称以固定的"_ViewBinding"后缀,找到了当前Activity的辅助类,并通过反射,生成了该辅助类的对象。而该辅助类持有当前的activity对象,从辅助类的代码可以看出,在辅助类里对当前Activity中的各变量进行了相应的findViewById及setOnClickListener等操作
image.png
image.png
3.最后unbind()方法中将赋值操作置为null
image.png
以上操作都是在编译时完成,因此 不会影响app运行性能