2

非常に画像が多いアプリケーションを使用しており、複数のアクティビティをロードするときに OutOfMemory の問題が多数発生していることに気付きました。

アクティビティはすべてビットマップのグリッドビューまたはリストビューであり、画像をクリックすると、別の一連の画像を含む別のアクティビティに移動します (アルバムのアルバムのアルバムのアルバムのようなものです)。最初の 3 つのアクティビティは正常に実行されますが、さらに下に移動すると、重大な OutOfMemory エラーが発生し始めます。

DDMS でスタック ダンプを実行した後、前のアクティビティの GridViews と Listviews がすべてのメモリを占有しているように見えます。多くのビットマップ自体が表示されているため、これは一種の予想ですが、VM がスタック内のアクティビティを解放する方法がわかりません。彼ら。

アクティビティは、バックグラウンドに移動するときにビューをリサイクルし、アクティビティに戻るときに復元しますか、またはグリッドビューとリストビューのイメージビューをクリアしていますか、これはアクティビティ onPause() と onResume() で手動で処理する必要がありますライフサイクル機能のアクティビティから離れるときは?

4

2 に答える 2

1

OOMEで私の答えを見てください

ビットマップが保持するメモリをクリアできないため、bitmap.recycle()を使用した後は必ず呼び出してください。bitmapsGC

上記のリンクには一般的な解決策があります。それを参照してください。

于 2012-09-17T09:37:57.590 に答える
1

bitmap s onPauseのリサイクルを 検討してください

于 2012-09-17T09:24:05.043 に答える