Dagger 2在销毁时是否会破坏组件的依赖关系(对子组件的引用设置为null)?
我在Android应用中有3个组件:AppComponent
(范围Singleton
,只要应用正在运行,就会存在),ApiComponent
和{{1 }}。 DataComponent
和ApiComponent
都使用来自DataComponent
的某些对象(例如总线),因此我认为我应该将AppComponent
添加为其他两个组件的依赖项(AppComponent
)。我在登录活动中不需要dependencies = {AppComponent.class}
,因此我想在注销时抛弃它(将引用设置为null),但我想知道DataComponent
是否也会被抛弃/垃圾收集,因为它被定义为依赖。
答案 0 :(得分:2)
正如我所做的那样,并且看到大多数人都在做AppComponent
的{{1}}实例,并将其初始化为Application
。这样它就会与应用程序生命周期一起生活,并且看起来像是单例。
只要您重复使用此相同的组件,您将在整个应用程序中获得相同的依赖关系。
总而言之,它取决于您存储对象的位置和方式。务必将它们放置在各自的生命周期中。如果您的某些组件以任何方式使用某些oncreate()
,请确保不要将其保留的时间长于活动存在的时间。
答案 1 :(得分:1)
保留AppComponent的实例,然后垃圾收集器无法收集它。