Advertisement

解决Android应用中Bitmap加载导致OOM内存溢出的问题

阅读量:

最近在开发一个上传头像的功能模块。在将头像传输至服务器的过程中,还需要将其保存在本地存储中。然而,程序运行一段时间后频繁出现OOM异常并导致崩溃,经过排查发现,问题根源在于直接通过Bitmap加载图片时,实际占用的内存远超图片原始大小,从而引发内存溢出的情况。
这一问题持续困扰了我两天时间,最终通过采用图片压缩的方式得以解决。考虑到用户头像在界面上显示的尺寸并不大,因此没有必要使用高清图片。为了记录此次问题的解决过程,决定撰写本文进行总结。

我所使用的工具类为自行编写的ImageUtils,其完整代码如下:

复制代码
    public class ImageUtils {
    
    public static Bitmap getBitmapFromPath(String imgPath, int reqWidth, int reqHeight) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(imgPath, options);
    
        // Calculate inSampleSize

全部评论 (0)

还没有任何评论哟~