Dagger2组件作为静态全局变量

时间:2015-06-19 22:46:51

标签: android dagger dagger-2

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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