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