Dagger 2 组件依赖生命周期

Dagger 2 component dependencies lifecycle

Dagger 2 在销毁组件时会销毁组件的依赖(子组件的引用设置为null)吗?

我在一个 Android 应用程序中有 3 个组件:一个 AppComponent(它有 Singleton 范围并且只要应用程序是 运行 就可以使用),一个 ApiComponent,还有一个 DataComponentApiComponentDataComponent 都使用 AppComponent 中的一些对象(例如总线),因此我认为我应该将 AppComponent 添加为对其他两个组件的依赖(dependencies = {AppComponent.class})。我的登录 activity 中不需要 DataComponent,所以我想在注销时放弃它(将引用设置为 null),但我想知道 AppComponent 是否也会得到ditched/garbage-collected 因为它被定义为依赖项。

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

正如我所做的,并且看到大多数人这样做,您将 AppComponent 的实例保留在 Application 中,然后将其初始化 oncreate()。这样它将与应用程序生命周期一起存在并且看起来是单例的。

只要您重复使用同一个组件,您的整个应用程序就会获得相同的依赖项。

总而言之,这取决于您存储对象的位置和方式。请务必根据各自的生命周期适当放置它们。如果您有一些组件以任何方式使用了一些 Activity,请确保它的保存时间不要超过 activity 存在的时间。