【问题标题】:How Are Bitmaps Stored in Memory in Android?位图在 Android 中是如何存储在内存中的?
【发布时间】:2012-06-01 21:47:47
【问题描述】:

没找到这个。

Bitmaps 在 Android 中是如何存储在内存中的?更具体地说,我正在寻找的是,它是逐像素存储信息,还是使用任何类型的算法来减少存储像素的数量,例如存储单个像素和重复多少次的数字连续。我想知道这一点,因为我们无法将我们想要的所有图像都放入我们的游戏中。如果它确实使用某种算法,那么我们可以对原始图像做一些事情来减少内存消耗,对吧?

【问题讨论】:

    标签: android android-canvas


    【解决方案1】:

    位图是压缩存储的,但如果不在某个点组装像素,您几乎无法显示。最好的选择可能是节省有限的 CPU 堆并将图像作为压缩的 OpenGL ES 纹理推送到 GPU。

    补充: 看看Displaying Bitmaps Efficiently。如果有帮助,也可以recycle你的位图。

    【讨论】:

    • 位图被压缩存储在磁盘上,在内存中它们被存储为常规位图。
    • 除了我读过的内容之外,将程序更改为 OpenGL ES 纹理将需要对程序进行大修。我真的不想那样做。
    【解决方案2】:

    虽然实现可能选择使用 RLE 将位图存储在内存中,但我非常怀疑是否会这样做,因为使用它们会效率低下。

    在 Android 3.0 及更高版本上,您可以请求更大的堆。

    【讨论】:

    • 在 3.0 上?嗯,游戏运行良好,设备更高端,但我的测试手机不行,我想让尽可能多的人玩这个游戏。
    • 等等...为什么 RLE 效率会低?
    • @Jesse J:因为位图在每次访问时仍然需要解码,而且 RLE 编码序列不是随机访问。
    猜你喜欢
    • 2012-11-09
    • 1970-01-01
    • 2013-03-17
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2012-07-02
    相关资源
    最近更新 更多