如何处理OutOfMemoryError

Byt*_*ode 22 android

在我的应用程序中,我有照片,视频等.在图像的情况下,我已经完成缩放,但有时我得到了OutOfMemoryError.如何有效地处理错误?

Dar*_*rov 32

在尝试加载图像之前,请检查图像大小是否小于可用内存.因此,处理OutOfMemoryException的最有效方法是以这样一种方式构建应用程序,即它永远不会尝试将大量数据加载到内存中以避免异常.


Kev*_*din 8

Activity中一个方法,当设备内存不足时调用该方法,但这只能用于触发缓存文件清理.这并不意味着您的应用程序进程内存不足.

您还可以添加try catch块来捕获Error或OutOfMemoryError,但这样做太迟了.

在Android应用程序中处理大量的位图或大型位图确实很困难.你会在Romain Guy的这篇文章中找到关于这个主题的一些提示.

您还可以通过在BitmapFactory.decode*()方法中提供的BitmapFactory.options中指定样本大小,直接将位图加载到所需的分辨率.

  • 请注意,仅当另一个应用程序需要更多内存时才调用 onLowMemory。不是当您的应用程序内存不足时。所以在抛出 OutOfMemoryError 时不会调用 onLowMemory。 (2认同)