继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【九月打卡】第11天 开源框架 ButterKnife 常见的面试题

GT9456
关注TA
已关注
手记 89
粉丝 12
获赞 17

课程名称BAT大牛亲授技能+技巧 Android面试快速充电升级
课程章节:Android基础相关面试问题
主讲老师DocMike

课程内容

ButterKnife 其实是依托 Java 的注解机制来实现辅助代码生成的框架,在编译阶段实现 View 的查找,不会影响性能。具体实现过程是在编译时读入 Java 源代码,解析注解代码,生成新代码,最后生成字节码。

ButterKnife 对性能的影响很小,因为没有使用反射,而是使用的 Annotation Processing Tool(APT),注解处理器,javac 中用于编译时扫描和解析 Java 注解的工具。注解解析器不能改变读入的 Java 类,比如不能加入或删除Java 方法。

总结一下 ButterKnife 的具体实现过程。

  1. 扫描 Java 代码中的所有 ButterKnife 注解。
  2. 利用注解处理器 ButterKnifeProcessor,生成新的 Java 代码,形如 “$$ViewBinder”。
  3. 调用 bind() 方法加载生成的 ViewBinder 类。

使用 ButterKnife 可以实现哪些任务?

  • 可以绑定一个 view,减少大量重复的模板代码,比如 findViewById。
  • 可以给 view 添加点击事件。
  • 可以同时给多个 view 添加点击事件。
  • 可以给 ListView 添加 ItemClickListener。

最后在使用过程中需要注意的是: 使用 ButterKnife 绑定一个 View 时,不能用 Private,Static 属性。只能使用反射注入原理,通过反射获取 View。缺点是,如果 Activity 大量使用反射,非常影响性能,特别是运行时性能,容易造成卡顿。产生的很多临时变量,容易引起 Java 的垃圾回收,大量频繁的垃圾回收会引起 UI 卡顿。

课程收获

这一章介绍了注解框架 ButterKnife 的原理,在 Kotlin 出来以后,ButterKnife 的使用场景更多的被 kotlin-android-extensions 取代,现在更多使用的是 ViewBinding。虽然 ButterKnife 的使用场景减少,但了解注解框架的实现原理还是非常有必要的。
图片描述
图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP