下载图片时 Out Of Memory问题

 

遇到下载图片时 Out Of Memory问题

 

描述:我的程序要求点击下载图片。在下载图片或者程序其他地方加载图片资源时,会出现 out of memory问题。

而且不固定是哪里。一般是我点击下载三张图(每张图120K左右的JPG),然后再下,再下, ... 三张图时会出现问题。

里面的类似代码如下:

...

this.bitmap = BitmapFactory.decodeStream(inputStream);

...

bitmap.recycle();

...

inputStream.close();

...

 

我的理解:

正常来说,BitmapFactory.decodeStream 这种方法比BitmapFactory.decodeResource 方法要靠谱一些。

堆栈溢出,也就是jpg解压成bitmap后占用内存过大,应该是能手动删除的地方要手动删除,不指着java自己进行回收。

 

解决办法:

有病乱投医。

  1.图片进行了压缩处理。

       BitmapFactory.Options options = new BitmapFactory.Options();
       options.inSampleSize = 2;//图片宽高都为原来的二分之一
       this.bitmap = BitmapFactory.decodeStream(inputStream, null, options);

   2.所有的用到bitmap的地方都手动去 recycle().

   3..所有用到inputStream的地方都close();

 

结果就OK了。

 

到现在我还不求甚解,希望懂的朋友帮忙说一下,不胜感激。

你可能感兴趣的:(java,null)