为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Android

课程名称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 的使用场景减少,但了解注解框架的实现原理还是非常有必要的。
图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消