[Android] Avoiding memory leaks

Avoiding memory leaks (超訳
http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html
まとめると、Context関連のメモリリークを避けるには次のことを心に止めておくこと。

  • アクティビティContextへの参照を長期間保持しないこと(アクティビティへの参照は、アクティビティ自身と同じライフサイクルでなければならない)
  • アクティビティContextの代わりにアプリケーションContextを使用してみる
  • アクティビティの中では、静的でない内部クラスを避ける。ただし、自分でライフサイクルを制御する場合を除く。静的な内部クラスを使用し、その中でアクティビティへの弱い参照を作成する。この問題に対する解決策は、例えばViewRootとその内部クラスで行っているように、外部クラスへのWeakReferenceを持つ静的な内部クラスを使用すること。
  • GCメモリリークに対する保険ではない。

そう、この記事は、きちんと議論するべきだと思っています。今度のSDK勉強会で少し議論したいですね。超訳をしていただいた安藤恐竜さんに感謝!