zoukankan      html  css  js  c++  java
  • 开源框架相关面试问题-butterknife注解框架面试问题讲解

    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的话那就只能采用反射方式来处理了,那就会影响性能。

  • 相关阅读:
    HDU3746 Cyclic Nacklace KMP
    KMP的小结
    POJ1916 Period KMP
    POJ 2406 Power Strings 简单KMP模板 strcmp
    HDU 2157 How many ways?? (邻接矩阵快速幂)
    (VIJOS) VOJ 1067 Warcraft III 守望者的烦恼 矩阵快速幂
    puppet之自定义fact(转载)
    Shell标准输出、标准错误 >/dev/null 2>&1
    如何在linux中用命令产生一个范围内的随机数?
    SNMP协议
  • 原文地址:https://www.cnblogs.com/webor2006/p/8998247.html
Copyright © 2011-2022 走看看