ButterKnife实现原理个人浅解

  1. 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运行性能

你可能感兴趣的:(ButterKnife实现原理个人浅解)