我的问题是我的APP因大型位图而崩溃。但我不明白为什么。我正在使用我的方法(你可以在下面看到),一切都很好,即使它不是最好的。但是当我决定添加更多的imageViews时,APP崩溃了。 (仅适用于大尺寸图像) 任何建议都会对我有帮助。
ImageView im = (ImageView) findViewById(R.id.myimage);
im.setImageBitmap(BitmapFactory.decodeFile(picturePath));
BitmapDrawable abmp = (BitmapDrawable) im.getDrawable();
ImageView im1 = (ImageView) findViewById(R.id.vienas);
im1.setImageBitmap(BitmapFactory.decodeFile(picturePath));
BitmapDrawable abmp1 = (BitmapDrawable) im1.getDrawable();
ImageView im2 = (ImageView) findViewById(R.id.du);
im2.setImageBitmap(BitmapFactory.decodeFile(picturePath));
BitmapDrawable abmp2 = (BitmapDrawable) im2.getDrawable();
bmp = abmp.getBitmap();
bmp = abmp1.getBitmap();
bmp= abmp2.getBitmap();
if (picturePath != null && bmp != null) {
int height = bmp.getHeight(), width = bmp.getWidth();
**if (height > 1280 && width > 960) {
Bitmap resized = Bitmap.createScaledBitmap(bmp,(int)(bmp.getWidth()*0.8), (int)(bmp.getHeight()*0.8), true);
bmp = resized;
im.setImageBitmap(bmp);
im.setVisibility(View.VISIBLE);
im1.setImageBitmap(bmp);
im1.setVisibility(View.VISIBLE);
im2.setImageBitmap(bmp);
im2.setVisibility(View.VISIBLE);**
} else {
im.setImageBitmap(bmp);
im.setVisibility(View.VISIBLE);
im1.setImageBitmap(bmp);
im1.setVisibility(View.VISIBLE);
im2.setImageBitmap(bmp);
im2.setVisibility(View.VISIBLE);
}
}
logcat的: 过程:com.example.g.eternalstudios,PID:30483 java.lang.OutOfMemoryError:无法分配带有16776176个空闲字节的30483652字节分配和25MB直到OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) 在android.graphics.BitmapFactory.nativeDecodeStream(本机方法) 在android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:882) 在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:858) 在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:478) 在android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:516) 在com.example.g.eternalstudios.MainActivity.onActivityResult(MainActivity.java:208) 在android.app.Activity.dispatchActivityResult(Activity.java:7137) 在android.app.ActivityThread.deliverResults(ActivityThread.java:4921) 在android.app.ActivityThread.handleSendResult(ActivityThread.java:4968) 在android.app.ActivityThread.access $ 1600(ActivityThread.java:222) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1849) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:158) 在android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1230) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 在此处输入代码 在这里输入代码