我的Android应用程序有多个活动。MainActivity在其onCreate()方法中构造了一个Dagger2组件,并将其分配给静态变量,因此任何类都可以调用静态方法MainActivity.getDaggerComponent()来向其自身注入依赖项。
我发现的问题是,当我启动VideoPlayerActivity时,MainActivity对象有时会调用其onPause()。如果发生这种情况,则静态组件变量将设置为null。稍后,VideoPlayerActivity需要注入其依赖项,但是由于没有组件,所以事情一发不可收拾。
如何确保Dagger2组件在所有活动中始终可用?
在Application
类中或仅静态初始化Dagger组件。试图在另一个Activity中使用一个Activity的依赖关系可能是一件很错误的事情。这可能会导致内存泄漏,特别是听起来像是设计问题。如果您的第一个Activity
已经被销毁怎么办?谁将释放Dagger实例?为什么图属于第一个Activity
而不属于第二个?如果用户从第二个开始进入您的应用程序Activity
-那么第一个甚至不会被初始化怎么办。等等等等。
如果仍然需要Activity
实例,则应使用中的Activity
特定组件,然后Activity
将其他所有内容移至全局(Application
宽)组件中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句