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

  • 相关阅读:
    操作权限和数据权限
    maven scope
    maven dependencies与dependencyManagement的区别
    maven pom继承与聚合
    java @SuppressWarnings注解
    java使用省略号代替多参数(参数类型... 参数名)
    Bean Validation 技术规范特性概述
    synchronized锁住的是代码还是对象
    Java泛型
    Java的外部类为什么不能使用private、protected进行修饰
  • 原文地址:https://www.cnblogs.com/webor2006/p/8998247.html
Copyright © 2011-2022 走看看