美文网首页
开源框架_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