Dagger 中每个片段的模块/Activity
Module per Fragment / Activity in Dagger
我想知道每个 Activity
有一个 Module
是否比每个 Fragment
有一个 Module
更好?在我的一个项目中,我有一个架构,每个 Fragment
都有一个 Module
,因为我使用 Activity
只是为了保持和交换 Fragments
,仅此而已。我只在需要时创建 Presenters
和 Interactors
,即在调用 Fragment.onCreate()
时。
但我可以看到有人在 their examples 中为每个 Activity
创建 Module
。虽然从模块化的角度来看,为 Activity
设置一个独立的 Module
的想法对我来说听起来非常合理,但我仍然相信创建和保留所有对象(Presenters
、Interactors
) 在你真正需要它们之前并不是一个好主意。您也不能在不需要时释放资源,当您在 Fragment.onDestroy()
事件中释放 scoped graph
时,您可以轻松地为每个 Fragment
执行 Module
。
这些示例假设您正在处理多个活动,每个活动都有自己明确的目的和范围。应用程序范围的依赖项存在范围 A
,每个 Activity 依赖项存在范围 B
、C
和 D
。
您基本上是在层次结构中添加一个额外的层:Application-Activity-Fragment。在这种情况下,由于您正在使用单个 Activity,范围 A
大致是应用程序 和 activity 依赖项的范围,并且B
、C
和 D
成为片段范围。
所以,是的,为每个片段创建一个模块是有意义的。
我想知道每个 Activity
有一个 Module
是否比每个 Fragment
有一个 Module
更好?在我的一个项目中,我有一个架构,每个 Fragment
都有一个 Module
,因为我使用 Activity
只是为了保持和交换 Fragments
,仅此而已。我只在需要时创建 Presenters
和 Interactors
,即在调用 Fragment.onCreate()
时。
但我可以看到有人在 their examples 中为每个 Activity
创建 Module
。虽然从模块化的角度来看,为 Activity
设置一个独立的 Module
的想法对我来说听起来非常合理,但我仍然相信创建和保留所有对象(Presenters
、Interactors
) 在你真正需要它们之前并不是一个好主意。您也不能在不需要时释放资源,当您在 Fragment.onDestroy()
事件中释放 scoped graph
时,您可以轻松地为每个 Fragment
执行 Module
。
这些示例假设您正在处理多个活动,每个活动都有自己明确的目的和范围。应用程序范围的依赖项存在范围 A
,每个 Activity 依赖项存在范围 B
、C
和 D
。
您基本上是在层次结构中添加一个额外的层:Application-Activity-Fragment。在这种情况下,由于您正在使用单个 Activity,范围 A
大致是应用程序 和 activity 依赖项的范围,并且B
、C
和 D
成为片段范围。
所以,是的,为每个片段创建一个模块是有意义的。