Dagger 中每个片段的模块/Activity

Module per Fragment / Activity in Dagger

我想知道每个 Activity 有一个 Module 是否比每个 Fragment 有一个 Module 更好?在我的一个项目中,我有一个架构,每个 Fragment 都有一个 Module,因为我使用 Activity 只是为了保持和交换 Fragments,仅此而已。我只在需要时创建 PresentersInteractors,即在调用 Fragment.onCreate() 时。

但我可以看到有人在 their examples 中为每个 Activity 创建 Module。虽然从模块化的角度来看,为 Activity 设置一个独立的 Module 的想法对我来说听起来非常合理,但我仍然相信创建和保留所有对象(PresentersInteractors ) 在你真正需要它们之前并不是一个好主意。您也不能在不需要时释放资源,当您在 Fragment.onDestroy() 事件中释放 scoped graph 时,您可以轻松地为每个 Fragment 执行 Module

这些示例假设您正在处理多个活动,每个活动都有自己明确的目的和范围。应用程序范围的依赖项存在范围 A,每个 Activity 依赖项存在范围 BCD

您基本上是在层次结构中添加一个额外的层:Application-Activity-Fragment。在这种情况下,由于您正在使用单个 Activity,范围 A 大致是应用程序 activity 依赖项的范围,并且BCD 成为片段范围。

所以,是的,为每个片段创建一个模块是有意义的。