朋友,
我正在使用以下代码在屏幕上显示位图,并使用下一个和上一个按钮来更改图像。
出现内存错误
新代码
HttpGet httpRequest = null;
try {
httpRequest = new HttpGet(mImage_URL[val]);
} catch (Exception e) {
return 0;
}
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
Bitmap bm;
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
InputStream is = bufHttpEntity.getContent();
try
{
bm = BitmapFactory.decodeStream(is);
}catch(Exception ex)
{
}
is.close();
旧代码
URL aURL = new URL(mImage_URL[val]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = null;
try
{
is= conn.getInputStream();
}catch(IOException e)
{
}
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
img.setImageBitmap(bm);
它给了我错误解码器 - >解码返回false。
尺寸大于400kb的图像。
所以谷歌搜索后我得到了新的代码作为答案 旧代码没有给我这些图像上的内存错误,但解码器 - >解码返回false,所以我选择了新代码。
任何人指导我的解决方案是什么,哪种是显示实时图像的最佳方法?
答案 0 :(得分:1)
您应该使用inSampleSize选项进行解码以减少内存消耗。 Strange out of memory issue while loading an image to a Bitmap object
JustDecodeBounds中的另一个选项可以帮助您找到正确的inSampleSize值http://groups.google.com/group/android-developers/browse_thread/thread/bd858a63563a6d4a