Dagger 2组件依赖生命周期

时间:2016-07-17 10:15:59

标签: android dependency-injection dagger-2

Dagger 2在销毁时是否会破坏组件的依赖关系(对子组件的引用设置为null)?

我在Android应用中有3个组件:AppComponent(范围Singleton,只要应用正在运行,就会存在),ApiComponent和{{1 }}。 DataComponentApiComponent都使用来自DataComponent的某些对象(例如总线),因此我认为我应该将AppComponent添加为其他两个组件的依赖项(AppComponent)。我在登录活动中不需要dependencies = {AppComponent.class},因此我想在注销时抛弃它(将引用设置为null),但我想知道DataComponent是否也会被抛弃/垃圾收集,因为它被定义为依赖。

2 个答案:

答案 0 :(得分:2)

正如我所做的那样,并且看到大多数人都在做AppComponent的{​​{1}}实例,并将其初始化为Application。这样它就会与应用程序生命周期一起生活,并且看起来像是单例。

只要您重复使用此相同的组件,您将在整个应用程序中获得相同的依赖关系。

总而言之,它取决于您存储对象的位置和方式。务必将它们放置在各自的生命周期中。如果您的某些组件以任何方式使用某些oncreate(),请确保不要将其保留的时间长于活动存在的时间。

答案 1 :(得分:1)

保留AppComponent的实例,然后垃圾收集器无法收集它。