2012-10-22 26 views
2

我在drawable-xhdpi中有15個圖像,每個都是800x800,在drawable-hdpi中我有相同的圖像但是600x600,當我在hdpi分辨率的設備上運行應用程序時,堆大小約爲3mb ,但是當我使用xhdpi分辨率在設備上運行它時,堆大小超過了40mb,並且我的內存不足? 有什麼不對?圖像是否太大?android,xhdpi - 堆

堆大小: LDPI:〜3MB MDPI:〜3MB 華電國際:〜3MB xhdpi:〜40MB這樣

加載圖像:

b1 = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
imageview.setImageBitmap(b1); 

then in OnBackPressed() b1.recycle() 
+0

你可以用'imageview.setImageResource(R.drawable.image)'代替嗎?這樣你就不必擔心回收位圖。 –

+0

以這種方式更糟 – aptyp

+0

我猜你需要分享更多關於你的應用程序(你對這些圖像做什麼,一次顯示多少,等等),可能還有更多的代碼來獲得任何進一步。除非你到目前爲止顯示的是你所做的全部? –

回答

5

這已經被問了很多次之前...加載時用於位圖的實際內存是H x W x 4。 800 * 800 * 4 * 15 = 38 MB。您不應該同時加載所有15個圖像。由於它們與屏幕大小有關,在這種情況下重新採樣不合理,您只需要弄清楚如何避免同時加載所有這些文件。

+0

我需要在同一時間加載它們。那麼svg呢? – aptyp

+0

好吧,你不能:)。如何將它們組合成你想要的最終結果? – dmon

相關問題