我使用imageview创建了一个自定义对话框。
当它关闭并经常打开时会发生此错误
java.lang.OutOfMemoryError:无法分配带有16775584个空闲字节的35236108字节分配和16MB直到OOM
对话框代码:
msg.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
final Dialog dialog = new Dialog(Settings.maincontext);
dialog.setContentView(R.layout.perfil);
dialog.show();
Vibrator vibration = (Vibrator) Settings.maincontext.getSystemService(Context.VIBRATOR_SERVICE);
vibration.vibrate(100);
dialog.setCanceledOnTouchOutside(true);
return false;
}
});
我相信在对话结束时我需要清除内存,以便下一个对话框有空间。
答案 0 :(得分:0)
您的OutOfMemory
Occure因为您的Image
尺寸非常大。尝试减少Image
大小并设置它。或者您必须在android:largeHeap="true"
文件中设置Manifest.xml
。
答案 1 :(得分:0)
此错误可能是因为您尝试加载内存图像而不释放它们。这可能会对您有所帮助:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
该链接向您解释如何以有效的方式加载图像或加载图像的缩放版本以减少使用的内存。
答案 2 :(得分:0)
这是因为你正在展示一幅包含非常大图片的图像视图。我的解决方案是使用类似Picasso的内容来优化您想要显示的图片。
这很简单:
Picasso.with(context)
.load(url)
.resize(50, 50)
.centerCrop()
.into(imageView)
这样你就不会耗尽内存。