2017-06-10 3 views
0

私はAndroidアプリケーションプロジェクトに依存性注入のためにdagger 2を使用しています。メモリからの参照を削除する

質問は、アクティビティが終了したときにコンポーネントから参照を削除する方法ですか?

私はカスタムスコープに関するいくつかのドキュメントを読んでおり、@ForActivityというカスタムスコープを作成しました。このアノテーションを持つ参照は、アクティビティが終了したときに削除されますが、削除されません。

この問題に関するご意見はありますか?

答えて

2

コンポーネント株式onCreateでコンポーネントを作成する意味の活動—のライフサイクルであれば、活動自体に格納し—それが活動生涯の終わりに活動とともに、ガベージコレクトされます。

一方、静的変数または他のより長い存続期間のオブジェクトに何らかの方法でアクティビティを参照するコンポーネントを配置すると、メモリリークが発生します。これは覚えておくべき唯一のことです。

Daggerはオブジェクトの作成を処理するPOJOを生成するだけなので、魔法のように "削除"されることはありません。通常は、GCにその仕事をさせるだけで十分です。

スコープは依存関係をグループ化してリレーションシップを定義するだけですが、最終的にコンポーネントは単なるオブジェクトではありません。上記のようにメモリリークを作成しない場合、ガベージコレクタはアクティビティとそれ以外のものを削除します。


私は最近もスコープ/活動に関する2件の詳細な回答を与えた/あなたはスコープ/のactivitesで動作する方法についてのより具体的な例を見つけるのオブジェクトを、スコープ:

関連する問題