2

我在drawable-xhdpi中有15个图像,每个都是800x800,在drawable-hdpi中我有相同的图像但600x600,当我在设备上以hdpi分辨率运行应用程序时,堆大小约为3mb,但是当我在设备上运行它时使用 xhdpi 分辨率,堆大小超过 40mb 并且内存不足?怎么了?图像是否太大?

堆大小:ldpi:~3mb mdpi:~3mb hdpi:~3mb xhdpi:~40mb

以这种方式加载图像:

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

then in OnBackPressed() b1.recycle()
4

1 回答 1

5

这已经被问过很多次了......加载时用于位图的真实内存是H x W x 4. 800 * 800 * 4 * 15 = 38 MB。您不应该同时加载所有 15 张图像。由于它们大约是屏幕大小,因此在这种情况下重新采样没有意义,您只需要弄清楚如何避免同时加载所有它们。

于 2012-10-22T21:12:37.187 回答