Dagger2的學(xué)習(xí)

Dagger :是安卓依賴注入框架。方便管理對(duì)象的初始化與使用。

關(guān)于相關(guān)注解
@Inject:
在需要注解的變量之前添加。也就是在需要依賴的地方使用這個(gè)注解。
@Provide:
對(duì)方法進(jìn)行注解,都是有返回類型的。在Module中以此來告訴Dagger我們想要構(gòu)造對(duì)象并提供這些依賴。
@Module:
Modules類里面的方法專門提供依賴,定義一個(gè)被@Module注解的類,Dagger就會(huì)知道在哪里找到依賴來滿足創(chuàng)建類的實(shí)例。
@Component:
注入器。是@Inject和@Module之間的橋梁,主要職責(zé)是把二者組合在一起。@Component注解用來標(biāo)記接口或者抽象類。所有的components都可以通過它的modules知道它所提供的依賴范圍。
@Scope:
作用域。Dagger2通過自定義注解來限定作用域。所有的對(duì)象都不再需要知道怎么管理它自己的實(shí)例。Dagger2中有一個(gè)默認(rèn)的作用域注解@Singleton,通常在Android中用來標(biāo)記在App整個(gè)生命周期內(nèi)存活的實(shí)例。也可以自定義一個(gè)@PerActivity注解,用來表明生命周期與Activity一致。換句話說,我們可以自定義作用域的粒度(比如@PerFragment, @PerUser等等)。
@Qualifier:
限定符,當(dāng)一個(gè)類的類型不足以標(biāo)示一個(gè)依賴的時(shí)候,我們就可以用這個(gè)注解。在Android中,我們需要不同類型的Context,我們可以自定義標(biāo)識(shí)符注解“@ForApplication”和“@ForActivity”。這樣的話,當(dāng)注解一個(gè)Context的時(shí)候,我們可以用這個(gè)標(biāo)識(shí)符來告訴Dagger我們想提供哪一種Context。Dagger2里面已經(jīng)存在一個(gè)限定符@Named注解。
@SubComponent:
如果我們需要父組件全部的提供對(duì)象,這時(shí)我們可以用包含方式而不是用依賴方式,相比于依賴方式,包含方式不需要父組件顯式顯露對(duì)象,就可以拿到父組件全部對(duì)象。且SubComponent只需要在父Component接口中聲明就可以了。

?著作權(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)容

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