如何在多个Activity之间共享Dagger2的Subcomponent

5
我想知道如何在不同活动之间共享子组件?
假设我有一个全局的AppComponent,它随应用程序一起运行。
我想要创建一个用户组件,当用户在我的应用程序中登录时,该组件跨多个活动存在。
当用户登录时,我的应用程序会创建一个UserComponent,其他活动需要从某个地方检索该组件,但我不知道最佳的“某个地方”。
我应该将UserComponent存储在Application中,并创建getter和reset组件的方法吗? 我应该将此组件放置在ApplicationModule中的“holder”对象内,并在每个子活动中通过获取ApplicationComponent中的“holder”来检索我的组件吗? 我应该只将其存储在静态字段中吗? 我应该做其他事情吗?

除了添加到应用程序之外,2023年是否有任何新的方法来完成这个任务? - Sam
1个回答

7
因为您负责子组件的生命周期,所以我建议将其存储在应用程序对象中,并添加getter和setter。这是唯一一个始终存在并且可以存储全局对象的地方。
包装器?是的,如果您想要更复杂的生命周期,但仍将存储在应用程序中。
您必须记住的是,应用程序对象也可能被终止,因此您应该能够恢复您的UserComponent。
这里有一个简单案例及源代码展示了如何使用UserComponent:http://frogermcs.github.io/dependency-injection-with-dagger-2-custom-scopes/

感谢您的输入。经过一些实践,我发现将子组件实例放在应用程序中确实是最好的位置。顺便说一句,这是一篇很棒的文章! - pdegand59

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接