我在drawable-xhdpi中有15个图像,每个图像都是800x800,在drawable-hdpi中我有相同的图像,但是600x600,当我在具有hdpi分辨率的设备上运行应用程序时,堆大小约为3mb,但是当我运行时在具有 xhdpi 分辨率的设备上,堆大小超过 40mb,并且内存不足? 怎么了?图片是否太大?
堆大小: LDPI:~3mb mdpi:~3mb 高清:~3mb xhdpi:~40mb
以这种方式加载图像:
b1 = BitmapFactory.decodeResource(getResources(), R.drawable.image);
imageview.setImageBitmap(b1);
then in OnBackPressed() b1.recycle()
最佳答案
这个问题之前已经被问过很多次了...加载时位图使用的实际内存是H x W x 4
。 800 * 800 * 4 * 15 = 38 MB。您不应该同时加载所有 15 个图像。由于它们与屏幕大小有关,因此在这种情况下重新采样没有意义,您只需弄清楚如何避免同时加载所有它们。
关于Android,xhdpi - 堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019706/