自动放大与无缩放的较大图像的内存差​​异

Memory Difference for Automatic Scale-Up vs. Larger Image with No Scale

我有一个游戏在创建 Bitmap 时意外出现了 OutOfMemoryException

对于某些资源,我只使用 drawable 文件夹中的 一个 图像 (MDPI)。这意味着 HDPIXHDPIXXHDPI.

没有单独的图像

Android 当分辨率更高时自动放大它们。

我的问题是:如果我在游戏中放入每个单独分辨率的初始放大图像,是否会提高内存效率 - 例如HDPI 的图像,XHDPI 的图像,并减轻 Android 在内存中转换和重新缩放 Bitmap 的需要,还是只对 MDPI 和 Android 使用单个图像来重新缩放本身更好更有效。

我朝那个方向考虑,因为我不知道在创建位图时 Android 内部需要多少内存来重新缩放图像,以及位图内存是否会更大或更小案件。但这似乎是一个可能的选择。

您可以在 drawable-nodpi 中使用您的图像,因此这些图像不会因不同的密度而缩放。 当 Android 将图像缩放到密度 phone 时 phone 正在使用内存,在您再次缩放图像后,您正在使用更多内存,并且将抛出 OutOfMemoryException。

您将输入:

android:largeHeap="true"

例如:

<application
    android:icon="@drawable/icon"
    android:theme="@style/TecnoblindsTHEME"
    android:largeHeap="true"
    tools:replace="android:icon,android:theme"
    android:label="@string/app_name"
 >

检查显示位图优化:

http://developer.android.com/training/displaying-bitmaps/index.html

就效率和性能而言,提供缩放图像几乎总是比让 Android 为您做这件事更好的主意。

话虽这么说:在 Android- 自动缩放而不是预缩放可能更 CPU 昂贵,但使用更少的内存。除非您不在同一会话中更改图像的比例,否则这应该不是问题。