我似乎无法掌握匕首的模块。
由于
答案 0 :(得分:2)
您应该多考虑@Component
而不是@Module
。模块只是创建需要进一步初始化的对象。实际工作发生在组件中,模块是组件的一部分。
每次我想注入东西时,我应该创建一个模块的新实例吗?
您应该在创建组件时创建模块,因为只有这个组件才需要它。如果您发现自己多次创建相同的模块,那么您很可能做错了。
模块使用其他参数(通过构造函数传递它们)来创建更复杂的对象。所以如果你有例如a UserModule
您将传入用户以从生成的组件中创建用户相关对象。如果用户更改丢失旧组件并创建新模块和新组件,则不应再使用旧对象。
将组件保留在适当的位置,并确保使用 Scopes ,因为它们决定了组件的生命周期。
我应该只创建一个模块实例吗?如果是这样我应该在哪里做?
您最有可能只创建@Singleton
注释组件和模块的单个实例。在android中你最有可能保留Application
中的组件(不是模块!)或某些真正的“单例”的引用。
匕首使用的片段和活动是否有更复杂的例子?
尝试谷歌搜索。有许多高质量的教程与链接的github存储库,更深入和详细,这可能在这里SO。例如见Tasting dagger 2 on android。