android 显示图片时报错:java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeStream
这是之前使用的方法:
InputStream is = conn.getInputStream();
mBitmap = BitmapFactory.decodeStream(is);
出现错误的原因是bitmap图片尺寸较大,使用后超过预算的VM
解决方法为加上下面两句,使用图片的缩略图
InputStream is = conn.getInputStream();
BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 2;
mBitmap = BitmapFactory.decodeStream(is,null,options);
设置inSampleSize 的意义:
如果设置为值>1,请解码器subsample原始图像,返回较小的图像,以节省内存。样本大小是任一维度中对应的解码位图中单个像素的像素的数目。例如,inSampleSize= =4返回一个1/4 的图像的宽度高度的原始和1/16的像素数。任何值< =1是同样视为1。注:解码器将尝试满足这一要求,但所生成位图可能有不同的维度正是已请求的。此外,2 的权力往往更快/更容易的解码器来纪念。