【发布时间】:2018-02-07 00:53:33
【问题描述】:
我正在尝试在我的安卓手机上加载一张大小为 965KB 的 jpeg 照片。代码如下。当我运行代码时,应用程序崩溃了。
Button _btn = (Button) findViewById(R.id.btn1);
_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Drawable _draw = getResources().getDrawable(R.drawable.sea, null);
}
});
这是崩溃日志。
E/AndroidRuntime: 致命异常: main 进程:com.a3sumatch.multipart,PID:29240 java.lang.OutOfMemoryError:分配 362797068 字节失败 分配 8388608 个可用字节和 254MB 直到 OOM 在 dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在 android.graphics.BitmapFactory.nativeDecodeAsset(本机方法) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) 在 android.content.res.Resources.loadDrawableForCookie(Resources.java:2761) 在 android.content.res.Resources.loadDrawable(Resources.java:2654) 在 android.content.res.Resources.getDrawable(Resources.java:833) 在 com.a3sumatch.multipart.MainActivity$1.onClick(MainActivity.java:40) 在 android.view.View.performClick(View.java:5205) 在 android.view.View$PerformClick.run(View.java:21176) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:171) 在 android.app.ActivityThread.main(ActivityThread.java:5611) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
【问题讨论】:
-
你知道吗:Android 喜欢根据屏幕分辨率缩放图像?所以它可能比原来的要大得多。其次,位图是一种未压缩的格式,每像素保存一个整数,而 JPEG 可能很难压缩
标签: android crash out-of-memory