美文网首页
ButterKnife原理

ButterKnife原理

作者: 俗人浮生 | 来源:发表于2019-04-01 20:59 被阅读0次

ButterKnife是用来解放开发者的,避免重复编写findViewById,setOnClickListener等操作,也就是说,其实这是一个用来提高开发效率的框架,当然,现在kotlin语言已经流行起来,直接用id就可以访问到view,故相应该框架的优点也稍微被弱化了。

今天我们来说说ButterKnife的原理:
1)在编译期,使用annotationProcessor技术(与APT类似,是一种注解处理器)对代码进行扫描,查找出相应注解,比如BindView,收集所需的相关信息并进行整理
2)使用JavaPoet将上述收集整理好的信息生成一个已“_ViewBinding”为结尾的类,这是一个辅助类,同样在编译期完成的
3)当调用ButterKnife.bind(x)方法后,会动态加载当前类的辅助类(类名=当前类名+“_ViewBinding”),并通过反射机制获取到辅助类的一个实例,并返回该实例(因为所有辅助类都实现了Unbinder接口,所以bind方法返回的是一个Unbinder,通常我们获取该Unbinder调用unbind()来进行解绑)
4)上述获取到辅助类实例的过程,已经在辅助类的构造函数中进行了findViewById,setOnClickListener等操作,至此便完成了整个框架的流程。

另外,我们说说该框架的一些影响:
1)当编译完成后,你可在以下路径查找到对应生成的辅助类:app/build/generated/source/apt/debug/你的包名及路径/xxx_ViewBinding.java,由于该辅助类是在编译期完成的,所以对运行时的性能并不产生影响。
2)因为对每个需要用到ButterKnife的类都需生成一个辅助类,并且该辅助类也会一同打包进apk中去,故稍稍会增大安装包的大小。

详细的代码分析可参考:https://www.jianshu.com/p/39fc66aa3297

相关文章

  • 开源框架_02ButterKnife

    参考文章 : ButterKnife使用和原理 深入理解ButterKnife源码并掌握原理(一) 深入理解But...

  • ButterKnife分析

    一、ButterKnife的使用 Android Butterknife使用方法总结 - 简书 二、原理浅析 Bu...

  • ButterKnife原理

    ButterKnife是用来解放开发者的,避免重复编写findViewById,setOnClickListene...

  • ButterKnife原理

    参考githubButterKnife是一个视图注入框架。解决问题:去除大量繁重的View对象查findViewB...

  • Butterknife原理

    一、目标 写一个demo来实现Butterknife的findViewById功能。 二、核心原理以及实现 核心原...

  • ButterKnife原理分析

    ButterKnife源码地址 ButterKnife的分析文章很多了,这里只是简单分析原理,不想看代码,可以直接...

  • ButterKnife原理与源码分析

    参考深入理解ButterKnife源码并掌握原理

  • Android面试题3

    1 OkHttp原理?2 Retrofit原理?为何用代理?代理的作用是什么?3 ButterKnife原理?用到...

  • 手写ButterKnife

    了解了ButterKnife的原理后,今天我就带领大家手写一个简易的ButterKnife。因为ButterKni...

  • ButterKnife(二): 原理解析篇

    在上一篇文章ButterKnife使用篇里面已经详细介绍过如何使用ButterKnife了,本篇文章将分析它的原理...

网友评论

      本文标题:ButterKnife原理

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