gpt4 book ai didi

android - 作为静态全局变量的 Dagger2 组件

转载 作者:行者123 更新时间:2023-11-30 02:04:20 25 4
gpt4 key购买 nike

我的 Android 应用有多个 Activity。 MainActivity 在其 onCreate() 方法中构造了一个 Dagger2 组件并将其分配给一个静态变量,因此任何类都可以调用静态方法 MainActivity.getDaggerComponent() 然后为自身注入(inject)依赖项。

我发现的问题是,当我启动 VideoPlayerActivity 时,有时会调用 MainActivity 对象的 onPause()。如果发生这种情况,静态组件变量将设置为空。稍后,VideoPlayerActivity 需要注入(inject)它的依赖项,但没有组件,所以事情就搞砸了。

如何确保 Dagger2 组件在所有 Activity 中始终可用?

最佳答案

Application 类中或静态初始化 Dagger 组件。尝试在另一个 Activity 中使用一个 Activity 的依赖项可能是您在做一件非常错误的事情。这可能会造成内存泄漏,尤其听起来像是一个设计问题。如果您的第一个 Activity 已经被销毁怎么办?谁将释放 Dagger 实例?为什么图形属于第一个 Activity 而不是第二个?如果用户将从第二个 Activity 进入您的应用怎么办 - 那么第一个甚至不会被初始化。等等等等。

如果您仍然需要 Activity 实例,那么您应该在 Activity 中使用 Activity 特定组件,并将其他所有内容移动到全局(应用程序宽)组件。

关于android - 作为静态全局变量的 Dagger2 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30948373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com