2012-05-17 5 views
10

これは、アプリがスプラッシュ画面からメインページに読み込まれるときに発生します。それはない、シミュレータ上で唯一のデバイス上で起こる:私はEcplise MATを使用Android - Grow Heap(Frag Case) - バイト割り当て - ビットマップをロードしていません

05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for  2424256-byte allocation 
05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K, 3% free 21000K/21511K, paused 21ms 
05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K, 3% free 20885K/21511K, paused 2ms+2ms 
05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K, 4% free 20841K/21511K, paused 10ms 
05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation 

- バイトの割り当てが解決 - Android.Graphics.Bitmap $プリロードされた画像...

私が使用しているデバイスは、Googleのネクサスですプライム、Android 4.0

同じことが起こったことはありますか?誰かがいくつかの専門知識を投げることができますか?

+0

読み込んでいるビットマップのサイズは? –

答えて

10

OutOfMemory例外をもたらす非常に大きなBitmapをデコードしようとしています。これは、達成しようとしている操作が、デバイスの各アプリケーションで許可されているVM Budgetを超えていることを意味します(ヒープメモリ消費量に関しては、デバイスでは24 MB、エミュレータではおそらくそこには起こらない!)。私は同じ問題を経験し、それに対する解決策を発見した

BitmapFactory.Options o = new BitmapFactory.Options(); 
o.inSampleSize = 2; 
Bitmap b = BitmapFactory.decodeFile(pathToBitmap, o); 
+0

"file"の意味は、decodeFile()にあります。 –

+1

@AmitJayaswalこれを指摘してくれてありがとう、私は編集しました。デコードされるファイルへのパスを表すStringです。 –

14

は、インスタンスのための2つの要因によってあなたのBitmapをサンプリングするようにしてください。

リソースからビットマップをロードしていますか?もしそうなら、それらを "drawable"または "drawable-mdpi"のままではなく対応するdrawableフォルダに配置してみてください。

画像リソースがプレーンのドロウアブルフォルダにある場合は、システムにはdrawable-mdpiを意味します。したがって、高dpiまたは高dpiのデバイス(Galaxy NexusはExtra Highと思われます)は、デバイスのdpiに合わせてそのリソースを拡張します。

リソースのサイズが1つだけの場合は、それらをdrawable-nodpiに入れてそのまま使用します。しかし、あなたのレイアウトの一部はこの影響を受けるかもしれないので、私はdrawableフォルダ(ボタンイメージなど)にある特定のイメージを保持し、背景や他の大きなリソースをdrawable-nodpiに移動しました。

希望する;)

+0

すべての画像をdrawable-hdpiフォルダに入れます。しかし、私はボタンのstateChangingStyles用のdrawableフォルダに別のxmlファイルを持っています。これらのXMLファイルには画像が含まれています...それは懸念の原因ですか? – Ashwin

+0

@Ashwinでdrawableファイルにxmlファイルを格納しても問題ありません。 hdpiフォルダに格納されているビットマップのサイズはどれくらいですか?私はあなたがそれらをxhdpiまたはno-dpiに入れて、同じ種類のエラーが発生するかどうかを調べることをお勧めします。 – hjm

+0

画像を推奨フォルダに変更しましたが、効果はありません。私が持っているすべての画像はpng形式です。私がアプリケーション全体で持っている最大の画像はわずか77kbです。最初の起動時に24 MBを割り当てているため、これは意味をなさない。 – Ashwin

関連する問題