Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Dagger 2组件依赖项生命周期_Android_Dependency Injection_Dagger 2 - Fatal编程技术网

Android Dagger 2组件依赖项生命周期

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

Dagger 2是否会在组件被销毁时销毁其依赖项(对子组件的引用设置为null)


我在Android应用程序中有3个组件:一个
AppComponent
(具有
Singleton
作用域,只要应用程序运行就可以使用)、一个
apiccomponent
和一个
DataComponent
ApiComponent
DataComponent
都使用了
AppComponent
中的一些对象(例如总线),因此我想我应该将
AppComponent
添加为其他两个组件的依赖项(
dependencies={AppComponent.class}
)。我在登录活动中不需要
DataComponent
,因此我想在注销时放弃它(将引用设置为null),但是我想知道,AppComponent是否也会因为被定义为依赖项而被丢弃/垃圾回收。

保留AppComponent的实例,垃圾回收器就不能收集它。

保留AppComponent的实例,垃圾回收器就不能收集它。

就像我做的那样,我看到大多数人都在做,你保留它
应用程序中的
AppComponent
实例,然后初始化它
oncreate()
。这样,它将与应用程序生命周期共存,并且看起来是单例的

只要你重复使用这个组件,你就会在整个应用程序中获得相同的依赖关系


总而言之,这取决于你在哪里以及如何存储你的对象。确保将它们放置在适合其各自生命周期的位置。如果您的某个组件以任何方式使用了某个
活动
,请确保保留的时间不要超过活动存在的时间。

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

只要你重复使用这个组件,你就会在整个应用程序中获得相同的依赖关系

总而言之,这取决于你在哪里以及如何存储你的对象。确保将它们放置在适合其各自生命周期的位置。如果您有一些组件以任何方式使用某些
Activity
的组件,请确保它不会保持比活动存在的时间长