butterknife使用简介:

它的出现主要是为了解决咱们在android开发中会写大量的findViewById()、setOnClickListener()这样的索然无味的代码,其实它就是一个依托Java的注解机制来实现辅助代码生成的框架,下面来看一下它的简单使用:

1、绑定一个View:

相比其它注入框架,一般都是采用反射机制,但是一提到反射就会有性能问题,而butterknife则不一样,它采用编译时再生成的机制来执行view的查找,因为不用太过担心性能问题。

2、给View添加相应的事件:

在最后还得在onCreate()中执行关键的一句代码,如下:

butterknife原理:

在分析它的原理之前,先了解一下Java的注解处理:

也就是在编译期间就已经处理好了各个view的初始化和相应的点击事件,而不是在运行期间去做的,这个是区别于其它的注入框架。

下面从butterknife.bind()方法开始分析其原理:

下面总结一下它的整个过程:

1、开始它会扫描Java代码中所有的bufferknife注解。

2、ButterKnifeProcessor -> <className>$$ViewBinder:通过ButterKnifeProcessor会生成一个新的java类。

3、调用bind方法加载生成的ViewBinder类。

另外还需要注意:

因为如果是private的话那就只能采用反射方式来处理了,那就会影响性能。

最新文章

  1. centos 6.4 getmail 收取163 邮件
  2. WPF学习之路(八)页面
  3. Jackson转换对象为json的时候报java.lang.stackoverflowerror
  4. 深入浅出话VC++(1)——Windows程序内部运行机制
  5. iOS设置UISearchBar光标的颜色
  6. opencv中的图像复制、保存和显示
  7. Linux/Unix里,ln -s
  8. iOS开发——UI篇Swift篇&amp;UISlider
  9. CentOs Linux 分区建议
  10. 【转】ArrayList的toArray
  11. Unity5UGUI 官方教程学习笔记(一)Canvas
  12. 拓扑排序(Topological)
  13. 基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;
  14. Bellman-Ford 求含负权最短路
  15. 关于bitmap你不知道的一些事
  16. C语言中的位运算和逻辑运算
  17. ELK搭建&lt;三&gt;:安装Kibana
  18. 10.1 ES6 的新增特性以及简单语法
  19. UVa540
  20. 使用CodeSmith 生成代码

热门文章

  1. 9-2 yum,dnf和apt
  2. 今天发现一个Window系统服务增删改查神器:NSSM
  3. 【miscellaneous】IP多播技术及其编程
  4. 函数节流之debounce
  5. [转帖]开源的监控技术栈除了ELK,还有InfluxData的TICK
  6. java8 用法小结
  7. 【计算机网络】-网络层-Internet的网络层
  8. Yii2.0 queue
  9. paramiko-ssh实例
  10. RHEL8配置本地yum源