Android 匕首中每个碎片/活动的模块

Android 匕首中每个碎片/活动的模块,android,dagger,Android,Dagger,我想知道是否每个活动都有模块比每个片段都有模块更好?在我的一个项目中,我有一个体系结构,每个片段都有一个模块,因为我使用活动仅仅是为了保存和交换片段,其他什么都没有。我只在需要时创建演示者和交互者,即调用Fragment.onCreate()时 但我可以看到大家正在创建模块每活动。虽然从模块化的角度来看,为活动建立一个独立的模块的想法听起来非常合理,但我仍然认为在您实际需要之前创建并保留所有对象(演示者,交互者)并不是一个好主意。当您不需要资源时,您也不能释放它们,当您在Fragment.ond

我想知道是否每个
活动都有
模块
比每个
片段都有
模块
更好?在我的一个项目中,我有一个体系结构,每个
片段都有一个
模块
,因为我使用
活动
仅仅是为了保存和交换
片段
,其他什么都没有。我只在需要时创建
演示者
交互者
,即调用
Fragment.onCreate()


但我可以看到大家正在创建
模块
活动
。虽然从模块化的角度来看,为
活动
建立一个独立的
模块
的想法听起来非常合理,但我仍然认为在您实际需要之前创建并保留所有对象(
演示者
交互者
)并不是一个好主意。当您不需要资源时,您也不能释放它们,当您在
Fragment.ondestory()
事件中释放
范围图时,您可以轻松地为
模块
片段
释放资源。对于应用程序范围的依赖项,存在范围
a
,对于每个活动依赖项,存在范围
B
C
D

您基本上是在层次结构中添加一个额外的层:应用程序活动片段。在这种情况下,由于您使用的是单个活动,所以范围
a
大致就是应用程序和活动依赖项的范围,而
B
C
D
则成为片段范围


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

我的应用程序还包括几个活动,这些活动具有明确的范围和目的。我只是不明白创建和保存对象的目的,除非你真的需要它们(如果你有“活动范围”模块,情况会怎样),或者我太在意了?也就是说,保留演示者和其他对象在内存占用方面并不是什么大问题。我完全同意您应该在尽可能低的级别引入和实例化依赖项。