共计 1533 个字符,预计需要花费 4 分钟才能阅读完成。
在应用 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 单例类
- 理解组件的子组件
- 更多内容 …
赶快尝试起来!如果您在应用中呈现任何问题,请及时向咱们 反馈问题。