如何在dagger-2中使用模块

时间:2016-03-16 20:15:53

标签: dagger-2

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

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

1 个答案:

答案 0 :(得分:2)

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

  

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

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

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

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

  

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

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

  

匕首使用的片段和活动是否有更复杂的例子?

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

相关问题