遇到下载图片时 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了。
到现在我还不求甚解,希望懂的朋友帮忙说一下,不胜感激。