我有一个方法是在异步中调用的,下载小的网络图片没有问题,但是下载大的图片(300多kb)时就报错了,方法如下:
// 该方法用于根据图片的URL,从网络上下载图片
protected Drawable loadImageFromUrl(String imageUrl) {
try { 
// 根据图片的URL,下载图片,并生成一个Drawable对象
return Drawable.createFromStream(new URL(imageUrl).openStream(),
"src");
} catch (Exception e) {
System.out.println("loadImageFromUrl:e="+e.getMessage());
// throw new RuntimeException(e);
return null;
}
}
请问有什么办法可以解决吗?
很急,在线等,有答案马上结贴,谢谢!

解决方案 »

  1.   

    报的什么错?e.getMessage()是什么内容?
      

  2.   

    报错内容,依次如下
    ERROR/GraphicsJNI(722): VM won't let us allocate 15980544 bytes
    ERROR/AndroidRuntime(722): java.lang.RuntimeException: An error occured while executing doInBackground()
     ERROR/AndroidRuntime(722): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
    急呀,谁能帮忙解决下,谢谢各位了
      

  3.   

    好几个地方同时调用吗? bitmap内存溢出了
      

  4.   

    解决了,方案如下,谢谢各位了!
     URL u = new URL(url);
     URLConnection conn = u.openConnection();
     conn.connect();
     InputStream is = conn.getInputStream();
     BitmapFactory.Options options=new BitmapFactory.Options();
     options.inSampleSize = 2;//缩小图片,否则内存溢出
     Bitmap bitmap = BitmapFactory.decodeStream(is,null,options);
    return bitmap;