浅谈ButterKnife对Android性能的影响
ButterKnife是大神JakeWharton開源的View依賴注入框架,使用注解就可以完成View的查找,簡化了代碼的書寫。有人擔心項目中使用ButterKnife會對性能有影響,但又有人說ButterKnife使用了APT故不影響性能,事實到底如何?實現原理面前,一切都是透明的。
二 ButterKnife實現原理
2.1 注解處理
對于使用ButterKnife注解的類,都會生成實現ViewBinder接口名稱原類名+$$ViewBinder的相應輔助類。這個過程處于編譯期間,也就是我們APT在編譯時處理注解生成的。由此可知,對運行時的性能,這個階段是沒有影響的。
2.2 ButterKnife.bind過程
編譯期生成的輔助類,想要完成綁定View,還需要一個bind的過程。源碼如下:
Paste_Image.png
可以看到,bind分為兩個步驟。一個是找到注解處理器生成的輔助類,一個就是Android原本的findViewById過程。第二步就不用說了,性能影響主要是看第一步。
findViewBinderForClass方法如下:
Paste_Image.png
可以知道,該方法有兩個影響性能的地方,就是Class.forName和viewBindingClass.newInstance這兩個方法。ButterKnife對此進行了一些優化,使用靜態Map進行緩存,但是第一次查找的時候的性能影響是免不了的。
三 結論
通過原理分析,結論顯而易見。ButterKnife對性能有一定的影響,并且引入了更多的類和方法,增加了安裝包的大小。但是,對開發效率的提升也是顯而易見的,尤其是配合AS插件的使用。如何取舍,完全是由作為開發者的你來決定了。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的浅谈ButterKnife对Android性能的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringHttpInvoker解析2
- 下一篇: GitHub进一步了解