我的Android应用有多项活动。 MainActivity在其onCreate()方法中构造一个Dagger2组件,并将其分配给一个静态变量,因此任何类都可以调用静态方法MainActivity.getDaggerComponent(),然后为自己注入依赖项。
我发现的问题是,当我启动VideoPlayerActivity时,MainActivity对象有时会调用onPause()。如果发生这种情况,静态组件变量将设置为null。稍后,VideoPlayerActivity需要注入其依赖项,但是没有组件会让事情爆发。
如何确保Dagger2组件始终可用于所有活动?
答案 0 :(得分:1)
初始化Application
类中的Dagger组件或仅静态。可能是您尝试在另一个Activity中使用一个Activity的依赖项时做了一件非常错误的事情。这可能会造成内存泄漏,特别是听起来像设计问题。如果您的第一个Activity
已被销毁怎么办?谁将释放Dagger实例?为什么图表属于第一个Activity
而不是第二个?如果用户将从第二个Activity
输入您的应用程序,那么首先一个人甚至不会被初始化。等等,等等。
如果您仍然需要Activity
个实例,那么您应该在Activity
中使用Activity
特定组件,并在全局(Application
宽)组件中移动其他所有组件。