【问题标题】:Memory Difference for Automatic Scale-Up vs. Larger Image with No Scale自动放大与无放大图像的内存差​​异
【发布时间】:2015-04-01 21:00:22
【问题描述】:

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

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

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

我的问题是:如果我在游戏中为每个单独的分辨率放入最初的放大图像,是否更节省内存? HDPI 的图像,XHDPI 的图像,使 Android 无需在内存中转换和重新缩放 Bitmap,还是只使用单个图像更好更有效MDPI 和 Android 自行重新缩放。

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

【问题讨论】:

    标签: android image bitmap scale resolution


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以在 drawable-nodpi 中使用您的图像,因此这些图像不会按不同的密度进行缩放。 当 Android 将图像缩放到 dencity 手机时,手机正在使用内存,在您再次缩放图像后,您正在使用更多内存,并且会抛出 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多