Dagger之終章——使用

上篇已經(jīng)學(xué)到了sington的用法。最后一段提供了一個(gè)全局注入單實(shí)例的思路。本文就講訴一下

需要全局注入單實(shí)例的類

public class DslBean{

    public DslBean() {

    }
}

App層面的module和component

@Module
public class AppModule {
    

    private MyApp app;

    public AppModule(MyApp app) {
        this.app = app;
    }
    @Singleton
    @Provides
    MyApp provideApp(){
        return app;
    }

    @Singleton
    @Provides
    DslBean provideAppBean(){
        return  new DslBean();
    }

}
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

  //為什么要寫這兩個(gè)方法,后面解釋
    MyApp getApp();

    DslBean getDslBean();

    void inject(MyApp app);

}

上面的沒什么特別,相信經(jīng)過前面幾篇文章的熏陶,這些都是小菜,注意@sington就好了

Activity層面的module和component

@Module
public class ActivityModule {

//因?yàn)檫@里我不注入對(duì)象到界面,所以沒代碼
}
//區(qū)別一:需要添加否則報(bào)錯(cuò)(因?yàn)閷?duì)這個(gè)地方還不是很了解,暫放)
@ActivityScope
//區(qū)別二:繼承依賴AppComponent
@Component(modules = ActivityModule.class,dependencies = AppComponent.class)
public interface ActivityComponent {


    void inject(MainActivity activity);

}
@Scope
@Retention(RUNTIME)
public @interface ActivityScope {}


我們現(xiàn)在反過來解釋,為什么上面AppComponent需要提供那兩個(gè)方法。因?yàn)?。ActivityComponent需要從AppComponent獲取那些單實(shí)例對(duì)象注入到界面中去,所以要繼承依賴他,并且AppComponent需要提供返回值為單實(shí)例的方法,不用參數(shù)。

最后mark project ,在onCreate調(diào)用

AppComponent appComponent = myapp.getAppComponent();
        DaggerActivityComponent.builder().appComponent(appComponent).build().inject(this);

即可

大概流程圖

Dagger大功告成

感謝已婚男士小熊的指點(diǎn)。

最后特別感謝該系列文章。大家可以直接閱讀該作者文章通熟易懂。

?著作權(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),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 本文的分析基于dagger2的2.7版本。 谷歌開發(fā)維護(hù)的Dagger2出來有很長(zhǎng)時(shí)間了,目前在很多開源項(xiàng)目上也能...
    sososeen09閱讀 13,766評(píng)論 31 108
  • 部分內(nèi)容參考自:[Android]使用Dagger 2依賴注入 - DI介紹(翻譯)[Android]使用Dagg...
    AItsuki閱讀 48,144評(píng)論 66 356
  • 都說不用 dagger2 的 mvp 模式都是耍流氓,但是,但是我之前一直都在耍流氓?所以這兩天入門了一下 dag...
    lovejjfg閱讀 4,778評(píng)論 0 7
  • 舊憶的窗 念君的扇 雨,敲打著窗。剪燭西窗,恐怕又等不及了。 嘆了口氣,輕輕的,悄悄的。信箋到了,...
    婳榭閱讀 203評(píng)論 0 2
  • 9月1號(hào)開學(xué)的日子,不論是對(duì)老師還是對(duì)學(xué)生來講都標(biāo)志著新的開始,同樣我也進(jìn)入了一個(gè)新的狀態(tài)。訓(xùn)練隊(duì)的完整雛形在今年...
    敵不住的困意閱讀 530評(píng)論 0 0

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