簡體   English   中英

Dagger2-組件保持為應用程序中的靜態對象

[英]Dagger2 - Component hold as a static object in Application

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

我想知道的是這是正確的方法嗎? 會引起問題嗎? 如果是這樣,那是什么?

可以,但是您將無法以這種方式使用注入上下文相關對象。 對於需要Context的組件,請在Application類中使用非靜態訪問器。 概括地說,將有您想要的組件數量,但是如果組件提供@Singleton-帶注釋的功能,則組件的生命周期不應比使用它的功能之一更長。

沒關系。 但是為什么要把它放在Application類中呢? 將其放在稱為Injector標准單例類中。 仍然您可能想要在Application初始化該單例,這很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM