2016-07-01 2 views
0

Создаю пользовательский диалог с изображением.Пользовательский диалог dont open oftentime

Когда близко и открытым часто эта ошибка происходит

java.lang.OutOfMemoryError: Не удалось выделить распределение 35236108 байт с 16775584 свободных байтов и 16МБ до диалоговым кодом ООМ

:

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

Возможно, эта проблема напрямую не связана с диалогом. Вероятно, вы используете слишком много памяти. Вы работаете с растровыми изображениями или другими «большими» объектами? – adalPaRi

+0

@adalPaRi OP говорит, что в первой строке они создали диалог с 'imageView' – Ironman

ответ

0

OutOfMemory В вашем случае, потому что ваш размер Image очень большой. попробуйте уменьшить размер Image и установите его. или вы должны установить android:largeHeap="true" в файле Manifest.xml.

+0

, и я нашел большое изображение. –

+0

@ MiillerDominguês теперь меняет его с низким. – Ironman

0

Эта ошибка может быть вызвана тем, что вы пытаетесь загрузить в память изображения без их освобождения. Это может вам помочь: https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

Ссылка объясняет вам, как загружать изображения способом eficient или загружать масштабированные версии одного и того же, чтобы уменьшить используемую память.

0

Это происходит, потому что вы показываете изображение, содержащее очень большую картинку. Мое решение - использовать что-то вроде Picasso для оптимизации изображений, которые вы хотите отобразить.

Это очень просто:

Picasso.with(context) 
    .load(url) 
    .resize(50, 50) 
    .centerCrop() 
    .into(imageView) 

Таким образом, вы не будете запускать из памяти.

Смежные вопросы