亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【九月打卡】第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 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
移動開發工程師
手記
粉絲
12
獲贊與收藏
17

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消