Java Android 5中的图像内存不足

Java Android 5中的图像内存不足,java,android,image-processing,out-of-memory,Java,Android,Image Processing,Out Of Memory,我的应用程序从网络加载大量图像,并通过BitmapFactory.decodeByteArray对其进行解码。但是当应用程序被解码时,许多图像抛出错误java.lang.OutOfMemoryError。所以,在我在BitmapFactory.Options中设置flaginpurgable=true之前,这个错误永远不会困扰我 在Android 5中,字段BitmapFactory.Options.inpurgable已被弃用,并且在解码大量图像后再次抛出java.lang.OutOfMemo

我的应用程序从网络加载大量图像,并通过
BitmapFactory.decodeByteArray
对其进行解码。但是当应用程序被解码时,许多图像抛出错误
java.lang.OutOfMemoryError
。所以,在我在BitmapFactory.Options中设置flag
inpurgable=true
之前,这个错误永远不会困扰我

在Android 5中,字段
BitmapFactory.Options.inpurgable
已被弃用,并且在解码大量图像后再次抛出
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上的Stacktrace:

    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)
...

使用本指南解决了问题:

可能会添加一些代码。@TimRijckaert要添加什么?这些图像是否本地存储?你在网上买吗?你能给我看一下stacktrace吗。一些代码也可能有助于社区了解你现在在做什么,这只是一个模糊的问题。@TimRijckaert我更新了一个问题,看看这是否对你有帮助:总有一天谷歌会决定取消链接。所以我未来的自己会偶然发现你的答案,并想知道,你的答案到底是什么?不幸的是,这是一个由谷歌五部分组成的教程,很难提炼成一个简短的答案。唉,这是我一直在寻找的,但我现在需要阅读教程。