android - 提供方法依赖

标签 android dagger dagger-2

在文档中它说@Provides 方法可能有自己的依赖关系,比如:

@Provides Pump providePump(Thermosiphon pump) {
  return pump;
}

如果我这样写会发生什么变化:

@Provides Pump providePump() {
  return new Thermosiphon();
}

在第一个 fragment 中:该方法从哪里获得它的泵?

最佳答案

文档还显示了 Thermosiphon 类:

class Thermosiphon implements Pump {
  private final Heater heater;

  @Inject
  Thermosiphon(Heater heater) {
    this.heater = heater;
  }

  ...
}

这个类的构造函数用@Inject注解。这让 Dagger 知道在需要 Thermosiphon 时使用此构造函数,并自动为其提供 Heater 实例,因此您不必这样做。

您自己创建一个新的 Thermospihon 实例完全没问题,但是 Dagger 这样做可以省去您的麻烦。例如,如果您手动执行此操作,则需要从某处获取一些 Heater 引用。这就是 Dagger 的全部意义所在,因此您不必进行繁琐的重复性工作。

关于android - 提供方法依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29548577/

相关文章:

Android MediaPlayer 流媒体错误 : 100: MEDIA_ERROR_SERVER_DIED

android - Kotlin - 如何更改语言环境

android - Dagger 不断拒绝注入(inject)依赖

java - 使用 FragmentScenario 对 Dagger fragment 进行单元测试

java - Dagger 2 - 无法初始化

java - android.view.InflateException 但仅当在 Oreo 上测试时

Android Studio 4.1 没有在 IDE 中显示错误

android - 当项目包含多个 android 模块时,不会生成 Dagger 测试组件

Android Dagger Hilt : Do we need scope annotations for ViewModels?

android - 如何创建 ViewModel 并使用 dagger 2 向其注入(inject)存储库?