最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【九月打卡】第11天 開(kāi)源框架 ButterKnife 常見(jiàn)的面試題

標(biāo)簽:
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 的使用场景减少,但了解注解框架的实现原理还是非常有必要的。
图片描述
图片描述

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
移動(dòng)開(kāi)發(fā)工程師
手記
粉絲
12
獲贊與收藏
17

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消