美文网首页
ButterKnife源码分析

ButterKnife源码分析

作者: 瓦雷 | 来源:发表于2019-02-19 21:13 被阅读1次

    ButterKnife框架生成了一个辅助类MainActivity_ViewBinding,那么该类是如何生成的呢?答案是:注解处理器在编译阶段生了该辅助类。实现一个注解处理器,需要继承抽象类AbstractProcessor,并重写init,getSupportedAnnotationTypes,getSupportedSourceVersion,getSupportedOptions,process五个方法。在process方法中,会对应用源代码中ButterKnife相关的注解进行扫描并解析其内容,将相关数据存放在一个Map集合中,最后使用Java Poet提供的JavaFile类,将集合中数据串接成字符串生成Java文件

    工作流程如下:

    1. 扫描Java代码中所有的ButterKnife注解@Bind, @OnClick, @OnItemClicked等
    2. 当发现类中含有任何一个注解时,ButterKnifeProcessor会生成一个Java类, 名字类似$$ViewBinder,新生成的类实现了ViewBinder接口
    3. ViewBinder类中包含了所有对应的代码,如@Bind注解对应findViewById(), @OnClick对应了view.setOnClickListener()
    4. 当Activity启动ButterKnife.bind(this)执行时,ButterKnife会加载对应的ViewBinder类调用它们的bind()方法。

    相关文章

      网友评论

          本文标题:ButterKnife源码分析

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