我正在与我的应用程序中的 OutOfMemoryError 作斗争。
我创建了一个背景图像,它是 800 像素 x 480 像素。当这张图片被加载到使用它作为背景的 View 中时,我认为操作系统会为它使用 800*480*4 字节。这是很多内存。
如果我创建一个 10 像素 x 10 像素的 9 补丁图像来替换整个屏幕图像。当操作系统渲染使用 9 补丁的 View 时,它会自动将 9 补丁图像缩放到 800x480。我的问题是,在 9 补丁的情况下,操作系统将使用多少内存来绘制缩放后的 9 补丁图像?是10*10*4字节还是800*480*4字节?
谢谢。
最佳答案
首先,如果它是背景图像,并且可以缩放,请这样做,因为这是众所周知的最佳做法(尤其是对于背景),并且可以通过选择正确的颜色来补偿图像清晰度的轻微损失和/或背景图案。
关于内存,如果您使用的是 Drawable,那么您就安全了。但是位图显然不是以标准的 Java 方式分配的,而是通过 native 调用分配的;分配是在虚拟堆之外完成的,但会被计入。 More on this problem here
关于android - 使用 9-patch 图像会节省大量内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394426/