OutOfMemoryError
这是在堆上请求大量内存时发生的运行时错误。将 Bitmap 加载到 ImageView 时很常见。
你有一些选择:
- 使用大型应用程序堆
将 largeHeap
选项添加到 AndroidManifest.xml 中的 application 标记。这将为你的应用提供更多内存,但可能无法解决根本问题。
<application largeHeap="true" ... >
- 回收你的位图
加载位图后,请务必回收它并释放内存:
if (bitmap != null && !bitmap.isRecycled())
bitmap.recycle();
- 将采样的位图加载到内存中
通过使用 BitmapOptions 和 inSampleSize 对缩小的大小进行采样,避免一次将整个位图加载到内存中。
例如,请参阅 Android 文档