tai nạn của tôi ứng dụng, hiển thị này trong logcat:java.lang.OutOfMemoryError Ngay cả trong một khối try-catch?
java.lang.OutOfMemoryError: (Heap Size=39047KB, Allocated=19932KB)
at android.graphics.BitmapFactory.nativeDecodeFile(Native Method)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:373)
at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:443)
at com.mApp.mobileapp.mActivity.onActivityResult(mActivity.java:196)
at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:153)
at android.app.Activity.dispatchActivityResult(Activity.java:4752)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3449)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3503)
at android.app.ActivityThread.access$1100(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1320)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:5109)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:991)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758)
at dalvik.system.NativeStart.main(Native Method)
Trong khi chạy mã này:
String selectedImagePath = data.getStringExtra("imageByteCode");
try {
File imageFile = new File(selectedImagePath);
Bitmap bitmap = BitmapFactory.decodeFile(imageFile
.getAbsolutePath());//line 196
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
base64code = selectedImagePath;
mImage.setImageBitmap(bitmap);
} catch (Exception e) {
}
Kể từ khi tôi đã bắt nó, tôi không bao giờ mong đợi nó sụp đổ các ứng dụng. selectedImagePath
là đường dẫn của hình ảnh được chọn trên thẻ SD, không bao giờ vượt quá 3m.b nhưng Kích thước heap = 39047KB, Phân bổ = 19932KB ??
Cảm ơn bạn
tuyệt vời. Nhưng không ai trong số các hình ảnh có kích thước hơn 3MB, do đó, tôi có thể không được xử lý phân bổ bộ nhớ bitmap đúng cách? –
Để tải hình ảnh lớn, điều này có thể hữu ích: http://stackoverflow.com/questions/2798756/load-large-images-into-bitmap – Henry