如何在Android上管理位图的内存?

时间:2015-10-31 04:09:05

标签: java android memory bitmap garbage-collection

我在Android开发者上关注this article,引用:

  

在Android 2.3.3(API级别10)及更低版本上,支持像素数据   位图存储在本机内存中。它与位图分开   本身,存储在Dalvik堆中。本机中的像素数据   内存不会以可预测的方式释放,可能导致内存   应用程序短暂超出其内存限制和崩溃。作为   Android 3.0(API级别11),像素数据存储在Dalvik上   堆以及相关的位图。

another article让我更加困惑:

  

Bitmap是一个围绕本机堆内存区域的瘦包装器   存储像素数据。

我有多重疑虑:

  1. Dalvik堆,本机堆和本机内存有什么区别?
  2. 位图与像素数据有何不同?我的理解是,任何图像文件(除非它是矢量图像)都称为位图 - 它是压缩的。 Android解压缩/解码此信息以在屏幕上渲染像素。如果我是对的,我们为什么还需要压缩位图?
  3. BitmapRegionDecoder这样的课程如何运作?我的理解是首先对整个位图进行解码/解压缩,然后忽略超出范围的区域 - 这将有助于提高内存效率,但不会使解码速度更快。我是对的吗?
  4. 回收位图时会发生什么?

1 个答案:

答案 0 :(得分:-3)

遇到OutOfMemoryError时,请尝试以下代码。

@Id