如何在活动之间共享 Dagger2 子组件

How to share Dagger2 Subcomponent between activities

我想知道如何在活动之间共享子组件?

假设我有一个与应用程序一起存在的全局 AppComponent。

我想要一个 UserComponent,当用户实际登录到我的应用程序时,它会存在于多个活动中。

当用户登录时,我的应用会创建一个 UserComponent,其他活动必须从某个地方检索它,但我不知道什么是最好的 "somewhere"。

我应该将 UserComponent 存储在应用程序中并创建一个 getter 和一个重置组件的方法吗? 我是否应该将此组件放在 ApplicationModule 和每个子 activity 中的 "holder" 对象内,通过从 ApplicationComponent 获取 "holder" 来检索我的组件? 我应该将它存储在静态字段中吗? 我应该做点别的吗?

因为您负责子组件的生命周期,所以我会将其存储在附加 getter 和 setter 的 Application 对象中。只有一个地方一直存在,可以存储全局对象。

包装器?是的,如果你想要更复杂的生命周期,但它仍然会存储在应用程序中。

你要记住的是 Application 对象也可以被杀死,所以你应该能够恢复你的 UserComponent。

这里有我的简单案例和源代码,它展示了 UserComponent 如何工作:http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/