乐趣区

关于android-studio:Dagger-导航从未如此简单-Android-Studio-41

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

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

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

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

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

特地阐明: 以后的性能将会在行将公布的 AS Canary 版本中失去优化。命名和图标可能会更改。在下文 “ 后续布局 ” 局部获取更多信息。

实际

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

△ Android Studio 中新的 Dagger 间距图标

此 Canary 版本的规范如下:

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

让咱们通过 GitHub 上的示例利用 Dagger branch (dev-dagger) of the architecture-samples,来演示新性能的应用。

理解依赖项来自哪里

在一个应用 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 单例类
  • 理解组件的子组件
  • 更多内容 …

赶快尝试起来!如果您在应用中呈现任何问题,请及时向咱们 反馈问题。

退出移动版