1

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

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

如何确保 Dagger2 组件始终可用于所有活动?

4

1 回答 1

1

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

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

于 2015-06-23T08:40:20.213 回答