将URL解码为Bitmap Android时的java.lang.OutOfMemoryError?

时间:2014-11-09 06:19:52

标签: android bitmap

我创建了android应用程序,其中包含我从URL解码的图像。将URL解码为Bitmap时出现以下错误。它发生在随机电话上。什么是错误不会发生的最佳情况。

以下是错误:

Caused by: java.lang.OutOfMemoryError
       at android.graphics.BitmapFactory.nativeDecodeStream(BitmapFactory.java)
       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:663)
       at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:735)

这是我用来解码图片网址的代码:

  Bitmap mIcon11 = null;
String filePath = imageURL;
InputStream in = null;
in = new java.net.URL(filePath).openStream();
BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 8;
o.inJustDecodeBounds = true;
o.inPurgeable = true;
mIcon11 = BitmapFactory.decodeStream(in);
return mIcon11; 

我不希望它在任何情况下崩溃。

请帮忙

3 个答案:

答案 0 :(得分:0)

你可以使用通用图像加载器liabrary。 它具有良好的图像处理能力,也为它们提供缓存。 https://github.com/nostra13/Android-Universal-Image-Loader

您可以使用: - ImageLoader.getInstance()。loadImageSync(uri,targetImageSize,options);

答案 1 :(得分:0)

嗨vo12使用 Aquery(https://code.google.com/p/android-query/wiki/ImageLoading)或通用库(https://github.com/nostra13/Android-Universal-Image-Loader管理解码图像或管理图像这些在我看来最好我也面临类似问题我使用了这些,现在outofmemory错误是罕见的。

答案 2 :(得分:0)

在我的情况下,我通过减少图像的宽度和高度来修复这种类型的错误。它可能也在你的情况下,错误与你的相同"引起:java.lang.OutOfMemoryError&#34 ;。仔细检查你在你的应用程序中使用的所有图像,它可能会有一些图像将具有不同的宽度/高度比其他图像。我认为你会崩溃与一些特定的设备,而不是所有的Android设备(因为我的情景,我的应用程序无法打开三星s3,s4音符2,xperia c等,但一切都很好)。实际上,图像的原因无法在设备屏幕上调整。