[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勉強会で少し議論したいですね。超訳をしていただいた安藤恐竜さんに感謝!