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)原理
- butterKnife是一個(gè)運(yùn)行時(shí)依賴注入框架,有效地幫我們簡化一些重復(fù)代碼。
- butterKnife在ButterKnife.bind方法里通過反射調(diào)用對(duì)應(yīng)的類構(gòu)造方法執(zhí)行初始化工作,所以butterKnife并不是完全沒有使用反射,只在這個(gè)地方用到了。所以butterKnife的效率也是很高的。對(duì)于反射這個(gè)技術(shù),不應(yīng)該持極端態(tài)度(徹底不用,或到處濫用)。特別是在android中,到處都是反射,對(duì)性能也是有一定的影響的。
- butterknife使用 apt(Annotation Processing Tool)技術(shù)來生成java類。
注解處理器:http://blog.csdn.net/u013045971/article/details/53509237