乐趣区

关于android:Android-Studio-41-的-Dagger-导航更新

在应用 Dagger 的我的项目中,您是否因为要弄清楚 Dagger 的依赖关系而产生纳闷?依赖项来自 @Inject 润饰的结构器、@Binds 还是 @Provides 润饰的办法?它有限定符吗?要搞清楚这个并非易事。

难道不能一键获取相干信息甚至失去更多内容吗?当然能够!

最新的 Android Studio 4.1 版本 (目前曾经在稳定版渠道公布) 为咱们带来了一个新的“间距图标”(在编辑器和代码行号之间的图标,如下图所示),通过点击这个图标, 咱们能够轻松地在 Dagger 的关联代码间进行导航 ,包含依赖项的生产者、消费者、组件、子组件以及模块。您同样能够在 Find usages 中获取雷同的信息。

在 Android Studio 4.2 中退出了更多针对 Hilt 的反对,除了上述列出的 Dagger 性能之外,您还能够更便捷应用入口点 (entry points) 导航性能。

在 Android Studio 中新增的 Dagger 导航反对 

正如您所看到的,在 Android 利用中 Dagger 关系的导航从未如此简略。新版本 Android Studio 将反对一键准确查找提供依赖项办法的性能。

实际

在 Android Studio 4.1 Canary 7 之后,您能够在应用 Dagger 的我的项目中看到一个新的间距图标:

Android Studio 中新的 Dagger 间距图标

它们的点击成果是:

  • 向上箭头的图标:提供类型的中央(即依赖项来自何处)
  • 树形的图标:类型被当作依赖项应用的中央

让咱们通过 GitHub 上的示例利用 architecture-samples 的 Dagger 分支 (dev-dagger),来展现新性能的应用。

理解依赖项来自哪里

在一个应用 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 性能赶快尝试起来!如果您在应用中呈现任何问题,请及时向咱们 反馈问题。

退出移动版