2014-11-09 44 views
0

我已經創建了Android應用程序,它具有從URL解碼的圖像。將URL解碼爲位圖時出現以下錯誤。它發生在隨機手機上。什麼是最好的情況下,錯誤不會發生。將URL解碼爲Bitmap Android時發生java.lang.OutOfMemoryError?

以下是錯誤:

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) 

這是我的代碼用於解碼圖像的URL:

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; 

我不希望它在任何情況下崩潰。

請幫忙

+0

在做任何與位圖之前,你必須通過Android的加載大型位圖高效部分http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – Praveen 2014-11-09 06:21:57

+0

類似的問題在這裏http:// stackoverflow。 com/questions/20441644/java-lang-outofmemoryerror-bitmapfactory-decodestrpath – SMA 2014-11-09 06:22:49

+0

@almasshaikh我已經插入了回收和發佈。讓我看看 – virendrao 2014-11-09 06:36:41

回答

0

你可以用通用圖像加載器liabrary去。 它具有良好的處理圖像也爲他​​們提供緩存。 https://github.com/nostra13/Android-Universal-Image-Loader

您可以使用: - ImageLoader.getInstance()loadImageSync(URI,targetImageSize,選項)。

+0

我使用畢加索,我提供了選擇將圖像設置爲壁紙,我需要將URL解碼爲輸入到方法中的位圖。 – virendrao 2014-11-09 12:38:45

+0

我認爲Universal Image Loader對位圖的處理有非常好的實現,試圖解決這個問題。 – 2014-11-10 01:14:45

0

嗨vo12使用Aquery(https://code.google.com/p/android-query/wiki/ImageLoading)或通用庫(https://github.com/nostra13/Android-Universal-Image-Loader管理圖像解碼或者在我看來,我也面臨類似的問題,我用這些,現在內存不足錯誤是難得的管理圖像,這些都是最好的。

+0

我使用畢加索,我提供了選項來設置圖像作爲壁紙,我需要將URL解碼爲輸入到方法的位圖。 – virendrao 2014-11-09 12:37:51

0

在我的情況下,我已經通過減少圖像的寬度和高度來解決這種類型的錯誤。它可能也是你的情況,錯誤和你的一樣「由java.lang.OutOfMemoryError引發」。通過你在你的應用程序中使用的所有圖像,它可能是一些圖像將有不同的寬度/高度比其他圖像。我認爲你會與某些特定的設備崩潰,而不是與所有的Android設備(因爲我的場景,我的應用程序無法用三星s3,s4注2,xperia c等打開,但都做得很好)。實際上,圖像的原因在設備屏幕上無法調整。

+0

嗨圖像的大小是一樣的。其實我設置壁紙,它需要一個位圖對象作爲輸入,因此解碼失敗 – virendrao 2014-11-09 12:36:50

相關問題