1

つまり、メモリリークを回避しようとしています。http://kohlerm.blogspot.co.uk/2009/02/memory-leaks-are-easy-to-find.htmlを読み、GC がメモリを解放できない原因を調べて、いくつかを特定しました。

とは言っても、次のようなことを行うことによって、常に手動で何を解放すべきかはまだわかりません: - リスナーの登録解除 - 参照の無効化 - レイアウトからのビューの削除

... システムがアプリケーションを破棄したときに自動的に解放されるものとは対照的です。

4

1 に答える 1

4

私が指摘できるいくつかのことは、Activityが一時停止しているときに行う必要があります。

  1. コンテキスト、アクティビティ、またはビューへの静的参照を使用していないことを確認してください。もしそうなら、それらをnullにしてください。

  2. 再生中のメディア (存在する場合) を停止し、mediaplayer のリソースを解放します。それらは非常に限られています。

  3. アクティビティが一時停止すると、サーフェスホルダーは破棄され、リソースを解放する必要があります。

  4. 呼び出されることが保証されている最後のライフサイクル メソッドであるため、必要なすべての vaiables/state を保存します。

  5. 必要に応じて、アニメーション、タイマー、非同期タスクを停止します。

于 2012-04-14T16:33:06.260 に答える