Dagger 導航從未如此簡單 | Android Studio 4.1

在使用 Dagger 的項目中,您是否由於要弄清楚 Dagger 的依賴關係而產生疑惑?依賴項來自 @Inject 修飾的構造器、@Binds 仍是 @Provides 修飾的方法?它有限定符嗎?要搞清楚這個並不是易事。java

難道不能一鍵獲取相關信息甚至獲得更多內容嗎?固然能夠!android

Android Studio 4.1 版本爲咱們帶來了一個新的 "間距圖標" (在編輯器和代碼行號之間的圖標,以下圖所示),經過點擊這個圖標,咱們能夠輕鬆地在 Dagger 的關聯代碼間進行導航,包括依賴項的生產者、消費者、組件、子組件以及模塊。您一樣能夠在 Find usages 中獲取相同的信息。git

△ 在 Android Studio 中新增的 Dagger 導航支持github

正如您所看到的,在 Android 應用中 Dagger 關係的導航從未如此簡單。新版本 Android Studio 將支持一鍵精確查找提供依賴項方法的功能。編輯器

特別說明: 當前的功能將會在即將發佈的 AS Canary 版本中獲得優化。命名和圖標可能會更改。在下文 "後續規劃" 部分獲取更多信息。

實踐

在 Android Studio 4.1 Canary 7 以後,您能夠在使用 Dagger 的項目中看到一個新的間距圖標:ide

△ Android Studio 中新的 Dagger 間距圖標優化

此 Canary 版本的標準以下:google

  • 向上箭頭的圖標: 提供類型的地方 (即依賴項來自何處)
  • 向下箭頭的圖標: 類型被看成依賴項使用的地方

讓咱們經過 GitHub 上的示例應用 Dagger branch (dev-dagger) of the architecture-samples,來演示新功能的使用。spa

瞭解依賴項來自哪裏3d

在一個使用 Dagger 注入的類中,若是您在依賴項上點擊帶有向上箭頭的間距圖標,您將跳轉到使用 Dagger 註解提供對應類型的方法。

在下面的例子中,TasksViewModel 依賴了 TasksRepository。點擊間距圖標便可跳轉到 AppModuleBinds 類中提供 TasksRepository 對象的 @Bind 方法:

△ 瞭解依賴項來自哪裏

一樣支持限定符

如上所述,若是使用了限定符提供依賴項,此功能將會幫您精確跳轉到提供方法處。

DefaultTasksRepository 依賴了被限定符修飾的 TasksDataSource。點擊間距圖標將跳轉到 AppModule 中使用限定符提供對應類型的方法。

△ 一樣支持限定符

依賴項在哪裏被使用

當您有一個使用 Dagger 註解提供依賴項的方法時,您能夠點擊帶有向下箭頭的間距圖標來跳轉到依賴項的使用處。若是該依賴項被多個消費者使用,您能夠在列表中選擇目標進行跳轉。

在咱們的項目中,DefaultTasksRepository 使用在了不一樣的 ViewModels 中,具體是哪些呢?您能夠經過點擊提供方法的間距圖標來了解 (此處使用 @Binds):

△ 瞭解依賴項在哪裏被使用

瞭解組件使用了哪些子組件

在子組件中,點擊間距圖標可得知哪些組件使用了該子組件:

△ 瞭解子組件被哪一個組件使用

Find Usages

您能夠在 Android Studio 使用 Find Usages 功能來得到一樣的信息。目前該功能僅可在 .java 文件中使用。在 Android Studio 的後續版本中將會支持 Kotlin 文件。

若是您在另外一個使用 Dagger 的 Java 項目中嘗試,則會看到相似下面的內容:

△ Find usages 關於 Dagger 關聯代碼的新功能

後續規劃

接下來發布的 Android Studio Canary 版本將提供新的功能,以下:

  • 支持多模塊項目
  • 支持 Kotlin 文件的 Find usages 功能
  • 識別經常使用定義 Dagger 模塊的 Kotlin 單例類
  • 瞭解組件的子組件
  • 更多內容 ...

趕快嘗試起來!若是您在使用中出現任何問題,請及時向咱們 反饋問題

相關文章
相關標籤/搜索