美文网首页
对ButterKnife源码的大致理解

对ButterKnife源码的大致理解

作者: 美人眉间点朱砂 | 来源:发表于2019-02-22 09:56 被阅读0次

    这里以在Activity使用@BindView,onCreate方法中使用ButterKnife.bind(this)为例,进行讲解。

    首先我们要了解的东西有两个

    1.注解解释器AbstractProcessor,是一个用于处理注解的东西。不懂的自行百度。

    2.javapoet,这是一个生成java文件的依赖

    ButterKnife对应的注解解释器是ButterKnifeProcessor,在process方法中,将所有的信息放置在一个Map集合中,然后会使用javapoet进行java文件的生成,具体源码流程可以自行百度。

    这里的JavaFile就是javapoet里面的,然后生成的java文件在这里

    我们可以在这里看一下生成的java文件

    这里生成了一个Activity类名+“_ViewBinding”的文件,其中findViewById操作是进行在Utils.findRequiredView()方法中的,我们通过@BindView进行注解的View就可以通过这个生成的java文件的构造方法进行findViewById,

    在ButterKnife的注解解释器ButterKnifeProcessor中,我们只是创建了这个java文件(Activity类名+“_ViewBinding”),但是现在并没有这个这个类的实例化对象,那么什么时候才有这个生成的java类的实例呢?那就是在ButterKnife.bind(this);的时候。

    可以看到生成的java文件是通过Activity对象打点调我们被BindView注解过的View,因为是打点调用,所以我们通过BindView注解的view就不能是私有的了,而应该是不写或者public。

    相关文章

      网友评论

          本文标题:对ButterKnife源码的大致理解

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