2
我看到如果在活動中實例化一個Dagger 2組件,那麼它會在onDestroy()
方法中被忽略,如here所示。如果我沒有在活動onDestroy()中設置Dagger 2 Component爲null,會發生什麼?
public class MyActivity {
private MyActivityComponent component;
//...
public void onCreate() {
component = Dagger_MyActivityComponent.builder()
.myApplicationComponent(App.getComponent())
.build()
.inject(this);
//...
}
public void onDestroy() {
component = null;
}
}
如果我不null
該實例,並會發生什麼,會發生什麼?
附註:in comments我發現有用的提示,爲何人們會將其設置爲null
這是非常有說服力的:「我不認爲這是必要的,但它定義範圍很清楚」。
「如果您保持對您的活動的靜態引用或者有其他某種內存和活動泄漏,這樣做雖然不成立。」你能詳細解釋一下這一點嗎? –
@MarianPaździoch這究竟是什麼不清楚給你?如果你泄漏了你的活動,如果你沒有設置它,你也會泄漏這個組件。如果您泄漏組件並引用您的活動,則無論您將組件設置爲null,這也會泄漏您的活動。如果你保持靜態變量設置爲這隻會導致他們的泄漏。 –