Android:オブジェクト属性として保存されているアクティビティとコンテキストが原因でメモリリークが発生しますか?

JarsOfJam-スケジューラー

メソッドで定義されたオブジェクト属性と別の属性を作成した場合、「メモリリーク」例外(たとえばが発生するリスクはありますか?activitycontextonAttach()

これは、特にcontextダイアログクラスで役立つ場合があります

への参照を考えると、#onAttach()フラグメントを扱っているように聞こえます。Androidのドキュメントによると

フラグメントは、getActivity()を使用してFragmentActivityインスタンスにアクセスし、アクティビティレイアウトでビューを見つけるなどのタスクを簡単に実行できます。

APIは、必要なものContextすべて公開するように設計されているためgetActivity()、必要な場所で必要なときに単純に使用する方が慣用的です。

一般に、UI要素または任意のタイプへの参照を取得する場合はContext、次のいずれかを確認する必要があります。

  1. 参照を保持している場所の存続期間は、参照されているもののライフタイプに完全に含まれています
  2. または... aWeakReferenceが使用され、null使用前にチェックされて、参照されたアイテムがガベージコレクションされるようにします。

UI要素のライフサイクルは、囲んContextでいる内に厳密に含まれているため、を使用せずにコンテキストを直接参照するのが通常ですWeakReference

さらに、特にダイアログのフラグメントよりも親コンテキストに依存する明示的な例があります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ