美文网首页
对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