我查看了几篇不同的文章,它们似乎提出了Dagger 2中实现自定义作用域的两种不同方法:
MVP Presenters that Survive Configuration Changes Part-2 (Github repo):
- 为每个Fragment使用唯一的自定义作用域,例如对于Hello1Fragment和Hello2Fragment分别使用
@Hello1Scope
和@Hello2Scope
- 为每个Fragment使用唯一的自定义作用域,例如对于Hello1Fragment和Hello2Fragment分别使用
-
- 为所有Fragment使用单个自定义作用域,例如
@PerFragment
- 为所有Fragment使用单个自定义作用域,例如
据我所知,就像方法2中一样,定义一个可用于所有片段的单个作用域应该是可以的 (即,@PerFragment
)。事实上 (如果我理解有误,请纠正我),似乎自定义作用域的名称并不重要,只有在哪里创建子组件(即在Application、Activity或Fragment中)才重要。
在像方法1中为每个片段定义唯一作用域的情况下,是否有任何用例呢?
Fragment1Component
,并在哪里使用它?onCreateView
中吗? - mbmconCreate
中实例化它。 - Giulio Piancastelli@Singleton
或者@ElectionScope2k16
注释方法,与使用@ActivityScope
注释没有区别吗?无论如何(除非未标记范围,这会导致每次注入时创建),它只会绑定到子组件的生命周期? - Zackline