2

私のアプリケーションは、GT-I9001 などの一部の古い Android デバイスで、約 3.4MB の少量のメモリを使用します。しかし、HTC 1 で実行すると、アプリケーションは非常に多くのメモリを使用します。

ここに画像の説明を入力

割り当てられたメモリは 26.881MB で、大きすぎます。空きメモリは 2.940MB しかありません。次に、MAT ツールを使用してメモリ リークをチェックします。リソース ビットマップがマッハ メモリを使用していることがわかります。

理由は説明できません。私のアプリケーションはしばしばメモリ不足になります。画面の解像度が高いことが問題の原因だと思います。誰かがこの問題に遭遇した場合は、ディスカッションに参加してください。

問題をデバッグしたところ、何らかの理由が見つかりました。

ここに画像の説明を入力

私の開始アクティビティの onCreate() 関数で、ブレークポイントを確認できます。アプリケーションは、setContentView(R.layout.welcome) を呼び出してレイアウト xml をロードする前に、割り当てられたメモリ 3.4MB のみを使用します。次に、アプリケーションは次のステップに進み、割り当てられたメモリ 19MB を使用します。したがって、この問題はレイアウト xml の読み込みが原因であると考えられます。

「welcome.xml」ファイルを変更し、「RelativeLayout」のみを持つすべてのウィジェットを削除しました

ここに画像の説明を入力

しかし、プログラムは 19MB のメモリも使用します。最後に、RelativeLayout の背景を削除し、プログラム メモリを通常のサイズに戻し、3MB しか使用しませんでした。

pictrue "loading_background.png" のサイズは 21KB しかありませんが、おそらくハイエンド デバイスの高解像度がメモリ内の画像サイズを変更したと思います。9.png 画像を使用してみます。問題のこの部分が理解できたら、ディスカッションに参加してください。

4

4 に答える 4

5

背景に大きな画像を使用する場合、メモリ リークではありません。

ファイルサイズは問いません。メモリにロードされると、width * height of the image * 4bytes.

可能な場合は、小さな 9 パッチ イメージまたはシェイプ ドローアブルを使用します。

于 2013-06-09T20:13:49.477 に答える
5

この問題は drawable-nodpi を使用して解決できます。

Android 背景画像のメモリ使用量

于 2013-06-16T02:54:08.093 に答える
2

3MB の PNG ファイルからビットマップを作成してみてください。20MBの画像が得られます。そのため、画像を PNG から JPG に変換することをお勧めします。品質は実際にはそれほど違いはありませんが、メモリ面で多くのメリットがあります。

于 2013-07-09T06:29:25.847 に答える
1

drawable の xxhdpi フォルダーに高解像度の画像を追加するだけです。これにより、アンドロイドが画像を超サイズに拡大できなくなります

于 2016-03-01T17:39:05.327 に答える