Android Dagger 2组件依赖项生命周期
Dagger 2是否会在组件被销毁时销毁其依赖项(对子组件的引用设置为null)Android Dagger 2组件依赖项生命周期,android,dependency-injection,dagger-2,Android,Dependency Injection,Dagger 2,Dagger 2是否会在组件被销毁时销毁其依赖项(对子组件的引用设置为null) 我在Android应用程序中有3个组件:一个AppComponent(具有Singleton作用域,只要应用程序运行就可以使用)、一个apiccomponent和一个DataComponentApiComponent和DataComponent都使用了AppComponent中的一些对象(例如总线),因此我想我应该将AppComponent添加为其他两个组件的依赖项(dependencies={AppCompone
我在Android应用程序中有3个组件:一个
AppComponent
(具有Singleton
作用域,只要应用程序运行就可以使用)、一个apiccomponent
和一个DataComponent
ApiComponent
和DataComponent
都使用了AppComponent
中的一些对象(例如总线),因此我想我应该将AppComponent
添加为其他两个组件的依赖项(dependencies={AppComponent.class}
)。我在登录活动中不需要DataComponent
,因此我想在注销时放弃它(将引用设置为null),但是我想知道,AppComponent是否也会因为被定义为依赖项而被丢弃/垃圾回收。保留AppComponent的实例,垃圾回收器就不能收集它。保留AppComponent的实例,垃圾回收器就不能收集它。就像我做的那样,我看到大多数人都在做,你保留它应用程序中的AppComponent
实例,然后初始化它oncreate()
。这样,它将与应用程序生命周期共存,并且看起来是单例的
只要你重复使用这个组件,你就会在整个应用程序中获得相同的依赖关系
总而言之,这取决于你在哪里以及如何存储你的对象。确保将它们放置在适合其各自生命周期的位置。如果您的某个组件以任何方式使用了某个活动
,请确保保留的时间不要超过活动存在的时间。正如我所做的和大多数人所做的那样,您将AppComponent的实例保留在应用程序
中,并对其进行初始化oncreate()
。这样,它将与应用程序生命周期共存,并且看起来是单例的
只要你重复使用这个组件,你就会在整个应用程序中获得相同的依赖关系
总而言之,这取决于你在哪里以及如何存储你的对象。确保将它们放置在适合其各自生命周期的位置。如果您有一些组件以任何方式使用某些Activity
的组件,请确保它不会保持比活动存在的时间长