Dagger2 - 组件在Application中作为静态对象保存

时间:2016-10-26 07:54:55

标签: java android dagger-2

在我的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;
        }
}

我想知道的是,这是正确的方法吗?它会引起问题吗?如果是这样,那是什么?

2 个答案:

答案 0 :(得分:1)

没关系,但是你不能以这种方式使用注入Context依赖的对象。对于需要Context的组件,在Application类中使用非静态访问器。 更广泛地说,将有尽可能多的组件,但如果组件提供@Singleton - 注释功能,组件的生命周期不应该长于使用它的功能之一。

答案 1 :(得分:1)

没关系。但是你为什么要把它放在Application班?将它放在标准的单例类中,例如Injector。您仍然可以在Application中初始化该单例,这很好。