Android Studio 4.1 的 Dagger 導航更新

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

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

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

在 Android Studio 4.2 中加入了更多針對 Hilt 的支持,除了上述列出的 Dagger 功能以外,您還能夠更便捷使用入口點 (entry points) 導航功能。編輯器

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

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

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

實踐

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

Android Studio 中新的 Dagger 間距圖標

Android Studio 中新的 Dagger 間距圖標3d

它們的點擊效果是:code

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

讓咱們經過 GitHub 上的示例應用 architecture-samples 的 Dagger 分支 (dev-dagger),來展現新功能的使用。component

瞭解依賴項來自哪裏

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

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

瞭解依賴項來自哪裏

瞭解依賴項來自哪裏

支持限定符

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

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

支持限定符

支持限定符

依賴項在哪裏被使用

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

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

瞭解依賴項在哪裏被使用

瞭解依賴項在哪裏被使用

Hilt 入口點

當您在一個 Hilt 的入口點 (entry point) 時,這個間距圖標能夠幫助您導航到依賴的來源。咱們撰寫了一個在 Android 中將 Dagger 遷移到 Hilt 的 codelab,在這個 codelab 裏,您可經過 android-dagger-to-hilt 工程的 interop 分支 的代碼來試用這個功能。

在入口點能夠導航到依賴的來源

在入口點能夠導航到依賴的來源

Find Usages 功能

在 Android Studio 中可使用 Find usage 功能找到您 Dagger/ Hilt 代碼之間的關係。

若是您右鍵點擊 AppModuleBinds 類的 bindRepository 方法,選擇 Find usage,而後就會看到以下相似的界面內容:

爲 bindRepository 方法使用 Find usage 功能

爲 bindRepository 方法使用 Find usage 功能趕快嘗試起來!若是您在使用中出現任何問題,請及時向咱們 反饋問題

相關文章
相關標籤/搜索