【发布时间】:2016-03-17 08:41:21
【问题描述】:
我似乎无法掌握匕首的模块。
- 每次我想注入东西时是否应该创建一个新的模块实例?
- 我应该只创建一个模块实例吗?如果是,我应该在哪里做?
- 是否有更复杂的片段和活动与 dagger 一起使用的示例?
谢谢
【问题讨论】:
标签: dagger-2
我似乎无法掌握匕首的模块。
谢谢
【问题讨论】:
标签: dagger-2
您应该更多地考虑@Component 而不是@Module。模块只是创建需要进一步初始化的对象。实际工作发生在组件中,组件是其中的一部分。
每次我想注入东西时,我是否应该创建一个新的模块实例?
你应该在创建它所属的组件时创建你的模块,因为只有这个组件需要它。如果您发现自己多次创建 same 模块,那么您很可能做错了什么。
模块使用附加参数(通过构造函数传入)来创建更复杂的对象。所以如果你有例如a UserModule 您将传入 a 用户以从结果组件创建用户相关对象。如果用户更改丢失了旧组件并创建了新模块和新组件,则不应再使用旧对象。
在适当的时候将组件保存在适当的位置,并确保使用 Scopes,因为它们决定了组件的生命周期。
我应该只创建一个模块实例吗?如果是,我应该在哪里做?
您很可能只会创建一个带有 @Singleton 注释的组件和模块的实例。在 android 中,您很可能会在 Application 或一些真正的“单例”中保留对组件(而不是模块!)的引用。
是否有更复杂的片段和活动与 dagger 一起使用的示例?
尝试谷歌搜索。有很多高质量的教程与链接的 github 存储库,这些教程在 SO 上可能会更深入和详细。例如见Tasting dagger 2 on android。
【讨论】: