ActivityでDagger 2 Componentをインスタンス化すると、後でhereのようにonDestroy()
メソッドでNULLが返されることがあります。私はないnull
そのインスタンスと何が起こるでしょうをすればActivity 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;
}
}
はどうなりますか?
サイドノート:「私はそれが必要だとは思わないが、それはスコープかなり明確定義」:in comments私は1つはかなり説得力のあるnull
に設定する理由役に立つヒントを見つけました。
"これは、あなたの活動への静的な参照を保持したり、他の種類のメモリや活動のリークがある場合には当てはまりません。これをちょっと詳しく教えていただけますか? –
@MarianPaździochこれはまさにあなたには分かりません。あなたの活動を漏らした場合、nullに設定しなければコンポーネントもリークします。あなたのコンポーネントをリークしてあなたの活動を参照する場合、あなたのコンポーネントをnullに設定しても、これはあなたの活動を漏らすでしょう。静的変数をどちらかに設定しておくと、これが漏れにつながるだけです。 –