2

setImageResource() を使用して Android アプリケーションに画像リソースをロードしていますが、何らかの理由で余分なメモリを大量に使用しています。

これは、画像が読み込まれたときに表示されるものです。

03-29 15:16:56.687: D/dalvikvm(23616): GC_FOR_ALLOC freed 42K, 11% free 16175K/18119K, paused 11ms
I/dalvikvm-heap(23616): Grow heap (frag case) to 23.154MB for 7675216-byte allocation
D/dalvikvm(23616): GC_CONCURRENT freed 3K, 8% free 23667K/25671K, paused 1ms+2ms
D/dalvikvm(23616): GC_FOR_ALLOC freed 0K, 8% free 23667K/25671K, paused 10ms
I/dalvikvm-heap(23616): Grow heap (frag case) to 39.624MB for 17272816-byte allocation
D/dalvikvm(23616): GC_CONCURRENT freed 0K, 5% free 40535K/42567K, paused 1ms+2ms

jpg は 1599x1200 であるため、最初の割り当ては 1599 * 1200 * 4 = 7675200 と予想されます。17MB の割り当てで何が起こっているのでしょうか?

4

1 に答える 1

7

ほとんどの場合、画像をディレクトリに配置するdrawable-mdpiか、単にdrawableディレクトリに配置しますが、デバイスでアプリを実行しhdpiます。この場合、画像の寸法は 1.5 倍になります。

1599 * 1200 * 4 * 1.5 * 1.5 = 17269200b ~ 17mb

drawable-nodpi不要なスケーリングを避けるために、おそらくイメージをディレクトリに移動する必要があります。

于 2013-03-30T12:14:40.340 に答える