2

画像の表示には vectordrawable を使用しています。画像は、アプリ (apk) にバンドルされているすべてのリソースです。私の問題は、アプリが OutOffMemoryException でクラッシュするまで、すべての新しいアクティビティのメモリが大幅に増加することです。

java.lang.OutOfMemoryError
    at android.graphics.Bitmap.nativeCreate(Native Method)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:903)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:880)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:847)

メモリ リークについて MAT を調べましたが、ビットマップ エラー以外は見つかりませんでした。

vectordrawables を表示する効率的な方法は何ですか? 私のアプリの一般的なアーキテクチャは、アクティビティのライフサイクルに適していないのでしょうか?

他のアプリ (facebook、aibnb、whatsapp など) の一般的なメモリ使用量に関する情報は見つかりませんでした。私の使用量は約40〜70MBです。

4

1 に答える 1

1

画像を扱う際には、次の点に注意してください。

  1. 画像を表示するたびに画像を読み込んでいますか? これは、非常にメモリを消費する操作になる可能性があります。画像を一度メモリに読み込んでから、アプリ全体で再利用することをお勧めします。
  2. 使用しなくなった画像が占めているメモリをクリーニングしていますか? イメージが不要であることが確実な場合は、 を呼び出して、割り当てられたビットマップ メモリを消去する必要がありますbitmap.recycle()。これにより、ビットマップが無効になり、占有されていたすべてのメモリが解放され、他の操作に使用できるようになります。
  3. 画像が大きすぎませんか?1 つの画像の最大サイズには制限があります。より大きなイメージを読み込もうとするとOutOfMemoryError、メモリが利用できる場合でも、エラーが発生します。その場合、ロードしようとしている画像ファイルを最適化することができます。

アプリを調べて、潜在的な問題を 1 つずつ確認してください。また、Android プラットフォームで使用できる優れたプロファイリング ツールもあります。過剰なメモリ割り当てなど、メモリ管理の潜在的な問題を示すことができます。

幸運を。

于 2016-02-02T21:08:19.667 に答える