android app开发中,OOM错误一般是由于程序设计不当引起的。
大多数情况下,如果Activity中加载了图片,关闭页面时又没有释放资源导致Memory Leak,程序就很容易由于OutofMemory而强行关闭。
几条可能有用的应对措施:
1)在Activity的onDestroy方法中,将所有该Activity加载的图片置为null,这样至少保证图片资源能够被虚拟机回收。
2)从网络读取图片资源时,先取得图片的size和屏幕的宽、高、分辨率,然后按比例缩放,只取合适大小的图片。
3)需要加载的图片集中管理,并使用Soft Reference引用图片(注意处理图片资源不可用的异常)。
几条可能没用的应对措施:
1)将Drawable设置为View的Background时,设置Drawable.setCallback(null),取消对View的引用。
2)调用Bitmap的recycle方法,对于Drawable,先用BitmapDrawable.getBitmap()方法取得Bitmap。
3)尽量直接取到可用的图片,避免中间转换步骤(Resize、Rotate等等)。
根本的解决方法:
做严格的Code Review,找出Memory Leak的原因,并释放掉这些Object。