Mir*_*ski 5 java android image-processing out-of-memory
我的应用程序从网络加载大量图像并通过BitmapFactory.decodeByteArray
. 但是当应用程序被解码时,许多图像会抛出错误java.lang.OutOfMemoryError
。所以,在我设置的标志inPurgeable = true
在BitmapFactory.Options
这种错误绝不会打扰我。
在 Android 5BitmapFactory.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);
Run Code Online (Sandbox Code Playgroud)
这一切。这在 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)
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4311 次 |
最近记录: |