BufferKnife和Dagger2對(duì)比

Android平臺(tái)可以使用的依賴注入框架,現(xiàn)在常用的有四種:Dagger、Butter Knife、RoboGuice、Android Annotations。

經(jīng)過一系列的比較,選擇的范圍縮小到Dagger、Butter Knife這2個(gè)框架上。其實(shí)在國內(nèi)外使用的比較多的應(yīng)該是Dagger,但是還是有點(diǎn)復(fù)雜的。

Butter Knife的確不是嚴(yán)格意義上的注入,之所以會(huì)叫View injection,是因?yàn)橐恍┰谑褂胐agger的人說view injection太麻煩了。所以才會(huì)有Butter Knife的誕生。Butter Knife就是這么簡單粗暴findViewById。

好了,到這里,應(yīng)該明白ButterKnife和Dagger的不同了,其實(shí)應(yīng)該說ButterKnife是Dagger的補(bǔ)充,ButterKnife只專注于View的注入。其他的就使用Dagger吧。用ButterKnife,配合Dagger使用。

ButterKnife

ButterKnife是一個(gè)編譯時(shí)的依賴注入框架(compile-time dependency injection framework)
用來簡化android中類似findViewById、setOnclickListener等的模板代碼

ButterKnife 有哪些優(yōu)勢(shì)?

ButterKnife的具體使用,請(qǐng)參考文章
http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549
http://blog.csdn.net/zhangconglin/article/details/78403049
它的具體優(yōu)勢(shì):
1.強(qiáng)大的View綁定和onClick事件處理功能,簡化代碼,提升開發(fā)效率
2.方便的處理Adapter里的ViewHolder綁定問題
3.運(yùn)行時(shí)不會(huì)影響APP效率,使用配置方便
4.代碼清晰,可讀性強(qiáng)

ButterKnife實(shí)現(xiàn)原理

  1. butterKnife是一個(gè)運(yùn)行時(shí)依賴注入框架,有效地幫我們簡化一些重復(fù)代碼。
  2. butterKnife在ButterKnife.bind方法里通過反射調(diào)用對(duì)應(yīng)的類構(gòu)造方法執(zhí)行初始化工作,所以butterKnife并不是完全沒有使用反射,只在這個(gè)地方用到了。所以butterKnife的效率也是很高的。對(duì)于反射這個(gè)技術(shù),不應(yīng)該持極端態(tài)度(徹底不用,或到處濫用)。特別是在android中,到處都是反射,對(duì)性能也是有一定的影響的。
  3. butterknife使用 apt(Annotation Processing Tool)技術(shù)來生成java類。
    注解處理器:http://blog.csdn.net/u013045971/article/details/53509237
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,111評(píng)論 25 709
  • 太長了,還是轉(zhuǎn)載吧...今天在看博客的時(shí)候,無意中發(fā)現(xiàn)了@Trinea在GitHub上的一個(gè)項(xiàng)目Android開源...
    龐哈哈哈12138閱讀 20,394評(píng)論 3 283
  • 一直想寫一篇東西,記錄下司考生獨(dú)特的七八九月,卻一直怠于動(dòng)筆,并不是那種入骨的絕望使我懼于再提,而是幾番思量...
    e50d93836d94閱讀 476評(píng)論 4 1
  • 動(dòng)態(tài)代理類的源碼是在程序運(yùn)行期間由JVM根據(jù)反射等機(jī)制動(dòng)態(tài)的生成,所以不存在代理類的字節(jié)碼文件。代理類和委托類的關(guān)...
    guan_xy閱讀 237評(píng)論 0 0
  • 10.15
    酷酷的小羊羊閱讀 172評(píng)論 0 0

友情鏈接更多精彩內(nèi)容