Android,xhdpi - 堆

标签 android image memory memory-management drawable

我在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/

相关文章:

android - FFMPEG for Android 从图像中编码视频质量很差(不清楚)

android - 以编程方式更改Android小部件ImageButton的src图像

php - 为什么引用使用更多内存?

c++ - 循环后变量的内存会发生什么变化? (C++)

java - Activity 的 Intent 过滤器必须包含 android.intent.action.MAIN 操作

java - 我如何覆盖 android.widget.TextView 的辅助功能类名

android - 在 Android 中获取当前位置的问题

javascript - 音频不在 React 中播放

plone4 中的 JQuery 图像

c++ - 内存错误 : free(): invalid next size (fast)