[英]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.