Java Dagger2-组件保持在应用程序中作为静态对象
在我的Java Dagger2-组件保持在应用程序中作为静态对象,java,android,dagger-2,Java,Android,Dagger 2,在我的应用程序类中,我将我的singleton Dagger组件作为一个静态对象,并通过它的静态getter方法到达它 public class MyApp extends Application { private static UtilsComponent utilsComponent; @Override public void onCreate() { ...... } publi
应用程序
类中,我将我的singleton Dagger组件
作为一个静态对象,并通过它的静态getter方法到达它
public class MyApp extends Application {
private static UtilsComponent utilsComponent;
@Override
public void onCreate() {
......
}
public static UtilsComponent getUtilsComponent(){
if(utilsComponent == null){
utilsComponent = DaggerUtilsComponent.builder()
.formattersModule(new FormattersModule())
.build();
}
return utilsComponent;
}
}
我想知道的是,这样做对吗?它会引起问题吗?如果是这样的话,这些是什么?这是可以的,但是您将无法以这种方式使用注入上下文相关对象。对于需要上下文的组件,在应用程序类中使用非静态访问器。
从更广泛的角度讲,将有尽可能多的组件,但若组件提供@Singleton注释的功能,那个么组件的生命周期就不应该比使用它的功能的生命周期长。。但是为什么要把它放在
应用程序类中呢?把它放在标准的单例类中,例如Injector
。您可能仍然希望在应用程序中初始化该单例,这很好。为什么要在应用程序中初始化该单例?有没有具体的原因?提供globlal(应用程序)Context
。