2013-03-30 25 views
2

我在使用setImageResource()的Android應用程序中加載圖像資源,出於某種原因,這使用了大量額外的內存。爲什麼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分配?

回答

7

這很可能是您將圖片放入drawable-mdpidrawable目錄,但在hdpi設備上運行該應用程序。在這種情況下,圖像的尺寸將縮放1.5。

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

您應該將圖像移動到drawable-nodpi目錄以避免不必要的縮放。

相關問題