freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

手動實現(xiàn)ioc框架(已修改)

2025-07-07 07:05 本頁面
 

【正文】 手動實現(xiàn)IOC框架自序在開發(fā)Android中,總要寫許多的findViewById方法,這無疑是一件非常痛苦的事情。直到接觸了Xutils框架,發(fā)現(xiàn)竟然可以使用注解的方式,優(yōu)雅的干掉了findViewById方法,當時真是驚為天人。后來遇到了Butterknife之后,發(fā)現(xiàn)不僅能夠通過實現(xiàn)findViewById方法,甚至連setOnClickListener,getString(),getResource()方法,都能通過一行注解的方式快速的實現(xiàn)。當時在使用過程中,感覺這種方式大大的提高了開發(fā)的效率,以及編碼的舒暢度,自己很有必要實現(xiàn)以下。于是便有了這篇博客,該篇博客主要實現(xiàn)了findViewById方法,雖然廣度不是很大,但他們的原理都是相同的。如何使用使用方式和Butterknife相似,通過注解@BindView標識控件,(this)實現(xiàn)代碼的注入。public class MainActivity extends AppCompatActivity { // 通過注解綁定控件 @BindView() TextView textView。 @Override protected void onCreate(Bundle savedInstanceState) { (savedInstanceState)。 setContentView()。 //代碼注入 (this)。 (123)。 }}實現(xiàn)原理實現(xiàn)方式有兩種通過反射實現(xiàn):如果對于反射有深入了解,則應該清楚,我們可以通過反射獲取到該注解,并且獲取到該注解的值等等一系列的必須量,通過反射我們實現(xiàn)對控件的注入。該方法雖然可以實現(xiàn),但對效率有著一定的影響。畢竟反射很影響效率。通過編譯器生成代碼實現(xiàn):在我們運行Java代碼的時候,然后運行class文件,那么我們能不能夠在編譯時期,根據(jù)我們的注解生成findViewById等方法,這樣我們就能夠在運行期查找控件。結(jié)果當然是可以的,本例就是使用這種方式。因為雖然其使用的是注解,但在運行期其實質(zhì)仍是通過findViewById方法查找控件,相比于反射來說,大大的提高了性能。通過編譯器生成代碼的大致流程如下:編寫Modul:iocannotation,該工程主要定義注解@BindView用以修飾變量。編寫Modul:iocpiler,該工程為最終會打成jar包,主要是在javac編譯時期根據(jù)注解生成注入代碼的相關類編寫Modul:iocapi,(),調(diào)用代碼注入的方法。編寫Modul:app,測試工程。代碼實現(xiàn)根據(jù)上面的流程,開始實現(xiàn)框架編寫iocannotation模塊該模塊比較簡單,就是定義一個注解。如下:@Retention()@Target()public @interface BindView { int value()。}該注解主要有兩個功能:在Activity中修飾變量,用以標識需要findViewById的相關控件。在iocpiler模塊中,用以檢索和獲取需要findViewById的控件。編寫iocpiler模塊在之前我們提到過,該框架的原理是在編譯時期根據(jù)我們的要求生成注入的輔助代碼,那么如何生成,以何種規(guī)則生成,肯定是由我們來定義的。javac命令中,(后面再說),這樣運行javac命令之前,javac會調(diào)用jar,通過這種特性訂制一些我們想實現(xiàn)的功能。那么看一下該模塊的關鍵類IocProcessor@AutoService()public class IocProcessor extends AbstractProcessor { // 文件相關的輔助類,生成JavaSouceCode private Filer mFileUtils。 private Elements mElementUtils。 // 日志相關 private Messager mMessager。 private Types mTypeUtils。 @Override public synchronized void init(ProcessingEnvironment processingEnvironment) {
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1