在使用 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):
△ 瞭解依賴項在哪裏被使用
瞭解組件使用了哪些子組件
在子組件中,點擊間距圖標可得知哪些組件使用了該子組件:
△ 瞭解子組件被哪一個組件使用
您能夠在 Android Studio 使用 Find Usages 功能來得到一樣的信息。目前該功能僅可在 .java 文件中使用。在 Android Studio 的後續版本中將會支持 Kotlin 文件。
若是您在另外一個使用 Dagger 的 Java 項目中嘗試,則會看到相似下面的內容:
△ Find usages 關於 Dagger 關聯代碼的新功能
接下來發布的 Android Studio Canary 版本將提供新的功能,以下:
趕快嘗試起來!若是您在使用中出現任何問題,請及時向咱們 反饋問題。