一直没能找到这个。
位图在 Android 中是如何存储在内存中的?更具体地说,我正在寻找的是,它是逐像素存储信息,还是使用任何类型的算法来减少存储像素的数量,例如存储单个像素和重复多少次的数字连续。我想知道这一点,因为我们无法将我们想要的所有图像都放入我们的游戏中。如果它确实使用某种算法,那么我们可以对原始图像做一些事情来减少内存消耗,对吧?
一直没能找到这个。
位图在 Android 中是如何存储在内存中的?更具体地说,我正在寻找的是,它是逐像素存储信息,还是使用任何类型的算法来减少存储像素的数量,例如存储单个像素和重复多少次的数字连续。我想知道这一点,因为我们无法将我们想要的所有图像都放入我们的游戏中。如果它确实使用某种算法,那么我们可以对原始图像做一些事情来减少内存消耗,对吧?
位图是压缩存储的,但是如果不在某个点组装像素,您几乎无法显示位图。您最好的选择可能是保存有限的 CPU 堆并将图像作为压缩的 OpenGL ES 纹理推送到 GPU。
附加:看看Displaying Bitmaps Efficiently。如果有帮助,还可以回收您的位图。
虽然实现可能会选择使用RLE将位图存储在内存中,但我非常怀疑是否会这样做,因为使用它们会效率低下。
在 Android 3.0 及更高版本上,您可以请求更大的堆。