2014-11-24 84 views
4

我的應用程序正在從網絡載入很多圖像,並通過BitmapFactory.decodeByteArray進行解碼。但是當應用程序解碼時,許多圖像會引發錯誤java.lang.OutOfMemoryError。所以在我設置標誌inPurgeable = trueBitmapFactory.Options之前,這個錯誤永遠不會打擾我。Out of Memory with Android 5中的圖像

在Android 5字段BitmapFactory.Options.inPurgeable已被棄用,java.lang.OutOfMemoryError在解碼大量圖像後再次拋出。

我應該在Android 5中使用以避免此錯誤?

編輯:

我的代碼:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPurgeable = true; 
bitmap = BitmapFactory.decodeByteArray(buffer.toByteArray(), 0, buffer.length(), options); 

這一切。這適用於Android 4或更低版本。

堆棧跟蹤Android上的5:

11-24 22:40:06.738: E/AndroidRuntime(19216): FATAL EXCEPTION: AsyncTask #3 
    11-24 22:40:06.738: E/AndroidRuntime(19216): java.lang.RuntimeException: An error occured while executing doInBackground() 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at android.os.AsyncTask$3.done(AsyncTask.java:300) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at java.lang.Thread.run(Thread.java:818) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): Caused by: java.lang.OutOfMemoryError: Failed to allocate a 1638412 byte allocation with 326188 free bytes and 318KB until OOM 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method) 
    11-24 22:40:06.738: E/AndroidRuntime(19216): at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:522) 
... 
+0

可能加入一些代碼。 – tim 2014-11-24 19:10:09

+0

@TimRijckaert要添加什麼? – miroslav 2014-11-24 19:21:40

+0

這些圖像是否在本地存儲?你在網上提取它們嗎? 你可以顯示堆棧跟蹤嗎?有些代碼也可能有助於社區看到你現在正在做的事情,這只是模糊的。 – tim 2014-11-24 19:27:14

回答

1
+0

谷歌決定終止鏈接時,這一天將到來。所以我未來的自我會絆倒你的答案,並想知道,你的答案實際上是什麼? – 2016-06-29 03:56:38

+0

不幸的是,這是一個由Google組成的由五部分組成的教程,很難提供一個簡短的答案。唉,這就是我正在尋找的,但我現在需要閱讀教程。 – autonomy 2016-10-24 01:15:48