在我的Application
课程中,我将单身Dagger Component
作为静态对象,并通过其静态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;
}
}
我想知道的是,这是正确的方法吗?它会引起问题吗?如果是这样,那是什么?
答案 0 :(得分:1)
没关系,但是你不能以这种方式使用注入Context依赖的对象。对于需要Context的组件,在Application类中使用非静态访问器。 更广泛地说,将有尽可能多的组件,但如果组件提供@Singleton - 注释功能,组件的生命周期不应该长于使用它的功能之一。
答案 1 :(得分:1)
没关系。但是你为什么要把它放在Application
班?将它放在标准的单例类中,例如Injector
。您仍然可以在Application
中初始化该单例,这很好。