美文网首页
开源框架_02ButterKnife

开源框架_02ButterKnife

作者: 冉桓彬 | 来源:发表于2018-04-15 14:43 被阅读5次
参考文章 :

前言 :

  • 今天看ButterKnife源码发现其内部还是用到了findViewById和反射, 只不过加了一个缓存, 只有第一次调用bind时使用反射, 后边再次调用bind时从缓存中取;

一、实际调ButterKnife.bind :

1.1 ButterKnife.bind :
ButterKnife.bind
  • 1、从BINDINGS中取出Unbinder, 如果target对应的Unbinder存在, 则直接使用, 反之则通过反射获取Unbinder对象;
  • 2、target对应ButterKnife.bind传入的Activity, 也就是如果在Activity中第一次调用过ButterKnife.bind时, 会使用反射, 之后都是从缓存中取Unbinder;
1.2 Unbinder.newInstance :
Unbinder.newInstance
    1. 可以看到ButterKnife内部还是用到了findViewById;

二、ButterKnife注解处理器:

  • 实际使用时, ButterKnife.bind源码比较简单, 而且用起来也简单, 比大量的显示调用findViewById要好很多, 接下来分析一下关于这个ButterKnifeTest_ViewBinding是如何产生的;
2.1 Activity.BindView :
public class ButterKnifeTest extends Activity {
    BindView(R.id.butterKnifeTextView)
    TextView mTextView;
    protected void onCreate(Bundle savedInstanceState) {
        ButterKnife.bind(this);
    }
}
2.2 ButterKnifeProcessor.process :
ButterKnifeProcessor.process
  • 1、编译时, 编译器会调用ButterKnifeProcessor的process方法;
2.3 ButterKnifeProcessor.findAndParseTargets:

相关文章

网友评论

      本文标题:开源框架_02ButterKnife

      本文链接:https://www.haomeiwen.com/subject/yndpcftx.html