從實(shí)例出發(fā)理解Dagger2(三)

很顯然笆呆,Context并不能通過(guò)new的方式提供请琳,那么就通過(guò)構(gòu)造函數(shù)傳參的方式提供。詳細(xì)代碼如下:

image.png

可見(jiàn)必要的提供Context的context()的方法還是有的赠幕,而且用@Provides注解俄精。至于這個(gè)ContextModule是什么時(shí)候被初始化的,通過(guò)什么樣的方式傳入到Dagger里面的榕堰,這個(gè)我們稍后再講竖慧。

那么通過(guò)這種注入方式,也可以提供Picasso逆屡。新建一個(gè)PicassoModule:


image.png

不難看出使用Dagger2會(huì)盡可能少的直接在需要依賴(lài)的地方new一個(gè)對(duì)象圾旨,而是通過(guò)Dagger去獲取一個(gè)對(duì)象。

那么會(huì)不會(huì)感到疑惑魏蔗,Dagger究竟是怎樣幫助我們生成所需要的類(lèi)呢砍的?通過(guò)點(diǎn)擊下圖中的紅色方框部分可以看到Dagger為我們生成的代碼。

image.png

生成的代碼如下:
image.png

image.png

image.png

image.png

可以看到Dagger生成了提供各個(gè)類(lèi)的Provider莺治,在initialize()中的初始化順序是按照正確的邏輯順序生成的廓鞠,雖然我們并沒(méi)有指定它的順序味混,這一切都是Dagger自動(dòng)完成的。
為了使用Dagger為我們生成的類(lèi)诫惭,我們就必須創(chuàng)建GithubApplicationComponent的實(shí)例翁锡。代碼如下:
image.png

看到了嗎,含有context的Module就是通過(guò)這樣的方式被初始化夕土,并且傳入Dagger的馆衔。通過(guò)創(chuàng)建的component就可以獲取需要的githubService和picasso啦。但是大家有沒(méi)有發(fā)現(xiàn)一個(gè)問(wèn)題怨绣,這里面每個(gè)Module都需要new一個(gè)傳進(jìn)去角溃,假如有個(gè)50個(gè)Module,這工作量也不少啊篮撑,而且容易漏减细。事實(shí)上Dagger只需要傳入一個(gè)ContextModule就行了,其余的Module都會(huì)自動(dòng)幫你生成赢笨。就像下面這樣:
image.png

如果你會(huì)看上面Dagger幫我們生成的代碼時(shí)未蝌,里面build()方法,你就會(huì)發(fā)現(xiàn)茧妒,Dagger會(huì)檢查需要的類(lèi)萧吠,如果為空就幫我們生成所需要的類(lèi)。唯一一個(gè)一旦為空就拋出異常的的Module就是ContextModule桐筏,因?yàn)镈agger并不知道如何創(chuàng)建這個(gè)類(lèi)纸型。

怎么樣,再對(duì)比剛開(kāi)始Application中的類(lèi)梅忌,是不是感覺(jué)少了很多代碼狰腌。接下來(lái)的文章將會(huì)介紹Scope的使用。

相關(guān)文章:
從實(shí)例出發(fā)理解Dagger2(一)
從實(shí)例出發(fā)理解Dagger2(二)
從實(shí)例出發(fā)理解Dagger2(三)
從實(shí)例出發(fā)理解Dagger2(四)
從實(shí)例出發(fā)理解Dagger2(五)
從實(shí)例出發(fā)理解Dagger2(六)
從實(shí)例出發(fā)理解Dagger2(七)

參考資料:https://www.youtube.com/watch?v=gg1zxoVStBM&list=PLuR1PJnGR-Ih-HXnGSpnqjdhdvqcwhfFU&index=3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牧氮,一起剝皮案震驚了整個(gè)濱河市琼腔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蹋笼,老刑警劉巖展姐,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異剖毯,居然都是意外死亡圾笨,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)逊谋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)擂达,“玉大人,你說(shuō)我怎么就攤上這事胶滋“鬻蓿” “怎么了悲敷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)俭令。 經(jīng)常有香客問(wèn)我后德,道長(zhǎng),這世上最難降的妖魔是什么抄腔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任瓢湃,我火速辦了婚禮,結(jié)果婚禮上赫蛇,老公的妹妹穿的比我還像新娘绵患。我一直安慰自己,他們只是感情好悟耘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布落蝙。 她就那樣靜靜地躺著,像睡著了一般暂幼。 火紅的嫁衣襯著肌膚如雪筏勒。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天粟誓,我揣著相機(jī)與錄音奏寨,去河邊找鬼。 笑死鹰服,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的揽咕。 我是一名探鬼主播悲酷,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼亲善!你這毒婦竟也來(lái)了设易?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛹头,失蹤者是張志新(化名)和其女友劉穎顿肺,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體渣蜗,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屠尊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耕拷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讼昆。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骚烧,靈堂內(nèi)的尸體忽然破棺而出浸赫,到底是詐尸還是另有隱情闰围,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布既峡,位于F島的核電站羡榴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏运敢。R本人自食惡果不足惜炕矮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望者冤。 院中可真熱鬧肤视,春花似錦、人聲如沸涉枫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)愿汰。三九已至困后,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衬廷,已是汗流浹背摇予。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吗跋,地道東北人侧戴。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像跌宛,于是被迫代替她去往敵國(guó)和親酗宋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,858評(píng)論 25 707
  • You need to tell the Dagger2 how to create your dependenc...
    From64KB閱讀 2,778評(píng)論 2 1
  • 看了很多Dagger2的文章疆拘,感覺(jué)道理好像明白了蜕猫,但是真的到用的時(shí)候仍然有點(diǎn)萌萌的,哦哎迄,不回右,懵懵的。完全不知道從哪...
    From64KB閱讀 5,009評(píng)論 5 24
  • 本來(lái)我昨晚就很晚睡覺(jué)了漱挚,今早一早就被媽 媽叫了起來(lái)监氢,她想做蔥油餅坊饶,我就在旁邊幫 她鳍刷,沒(méi)想到她把放著餅的蓋頂放到了廚...
    木之夭閱讀 244評(píng)論 0 0
  • 看完蔡崇達(dá)的《皮囊》喇伯,對(duì)于我來(lái)說(shuō)最大的感悟大概就是大部分的一生或許就要經(jīng)歷那些親人的疾病,家庭的矛盾,友人的遠(yuǎn)離哩治,...
    雀島札記閱讀 333評(píng)論 0 0