【问题标题】:How to use modules in dagger-2如何在 dagger-2 中使用模块
【发布时间】:2016-03-17 08:41:21
【问题描述】:

我似乎无法掌握匕首的模块。

  1. 每次我想注入东西时是否应该创建一个新的模块实例?
  2. 我应该只创建一个模块实例吗?如果是,我应该在哪里做?
  3. 是否有更复杂的片段和活动与 dagger 一起使用的示例?

谢谢

【问题讨论】:

    标签: dagger-2


    【解决方案1】:

    您应该更多地考虑@Component 而不是@Module。模块只是创建需要进一步初始化的对象。实际工作发生在组件中,组件是其中的一部分。

    每次我想注入东西时,我是否应该创建一个新的模块实例?

    你应该在创建它所属的组件时创建你的模块,因为只有这个组件需要它。如果您发现自己多次创建 same 模块,那么您很可能做错了什么。

    模块使用附加参数(通过构造函数传入)来创建更复杂的对象。所以如果你有例如a UserModule 您将传入 a 用户以从结果组件创建用户相关对象。如果用户更改丢失了旧组件并创建了新模块和新组件,则不应再使用旧对象。

    在适当的时候将组件保存在适当的位置,并确保使用 Scopes,因为它们决定了组件的生命周期。

    我应该只创建一个模块实例吗?如果是,我应该在哪里做?

    您很可能只会创建一个带有 @Singleton 注释的组件和模块的实例。在 android 中,您很可能会在 Application 或一些真正的“单例”中保留对组件(而不是模块!)的引用。

    是否有更复杂的片段和活动与 dagger 一起使用的示例?

    尝试谷歌搜索。有很多高质量的教程与链接的 github 存储库,这些教程在 SO 上可能会更深入和详细。例如见Tasting dagger 2 on android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多