自定义对话框不会经常打开

时间:2016-07-01 12:16:05

标签: java android memory

我使用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;
        }
    });

我相信在对话结束时我需要清除内存,以便下一个对话框有空间。

3 个答案:

答案 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) 

这样你就不会耗尽内存。