- 原文地址:New Android Injector with Dagger 2—part 2
- 原文做者:Mert Şimşek
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:woitaylor
- 校對者:XPGSnail LeviDing
在上一篇博客中我嘗試解釋了 dagger-android
注入。收到了一些評論,有的人說太複雜了不必 爲了使用新特性去升級。我想到會發生這種狀況,但我仍是以爲有必要去解釋dagger在幕後所作的工做。在閱讀這篇博客以前 我強烈建議先閱讀第一篇博客。本文中我會使用 **_@ContributesAndroidInjector_**
註解來簡化上篇博客中的代碼。前端
咱們經過下面的圖片來回憶第一篇博客中 dagger
結構圖。android
咱們一步步來檢查該圖譜。我只介紹 MainActivity
這部分。其餘部分的邏輯同樣。ios
AppComponent
和 AppModule
。MainActivity
, MainActivityComponent
, MainActivityModule
。MainActivity
到 ActivityBuilder
(這樣 dagger
就可以知道 MainActivity
將被注入)。讓咱們開始吧。在 MainActivity
中調用 AndroidInjection.inject(this) 而且在 MainActivityModule
中添加生成實例的方法。git
咱們只是想注入到 MainActivity
,卻作了不少事情。能不能進一步簡化?怎麼簡化?github
@Subcomponent
註解的 MainActivityComponent
和 DetailActivityComponent
在圖中只是起到相似橋樑的做用。咱們可以很容易地寫出這兩個類。UI
組件做爲新的 subcomponent
都必須把 activity
映射到 ActivityBuilder module
。這個工做常常是重複的。dagger
的做者們顯然也意識到這個問題,給了一個新的解決方法。因而就有了這個新註解—— @ContributesAndroidInjector,使用這個註解咱們可以輕鬆地把 activities/fragments
添加到 dagger
結構中。下圖爲簡化後的 dagger
結構圖,代碼稍後給出。後端
經過上面的結構圖我想大家可以理解得更深。這裏給出修改後的代碼。markdown
固然也能夠從 android injection
分支中拉取代碼。oop
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。post