2016-07-01 17 views
0

私はimageviewでカスタムダイアログを作成します。カスタムダイアログは公開されません

それがクローズとオープンしばしばこのエラーは

java.lang.OutOfMemoryErrorが起こる:

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; 
     } 
    }); 
:OOM

ダイアログコードまで16775584の空きバイトと16メガバイトと35236108バイトの割り当ての割り当てに失敗しました

私はダイアログの最後に次のダイアログにスペースがあるようにメモリをクリアする必要があると思います。

+0

おそらく、この問題はダイアログとは直接関係しません。おそらくあなたはあまりにも多くのメモリを使用しています。ビットマップや別の「大きな」オブジェクトを扱っていますか? – adalPaRi

+0

@adalPaRi OPは最初の行で 'imageView'とのダイアログを作成しました – Ironman

答えて

0

OutOfMemoryImageのサイズが非常に大きいため、あなたのケースで発生します。 Imageサイズを縮小して設定してください。 Manifest.xmlファイルにandroid:largeHeap="true"を設定する必要があります。

+0

大きな画像が見つかりました。 –

+0

@MiillerDominguêsは今それを低く変更します。 – Ironman

0

このエラーは、イメージを解放せずにメモリにロードしようとしている可能性があります。これはあなたを助けるかもしれません:https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

このリンクは、使用されたメモリを減らすために、効率的な方法でイメージをロードする方法、または同じもののスケーリングされたバージョンをロードする方法を説明します。

0

これは、非常に大きな画像を含む画像ビューを表示しているために発生します。私の解決策は、Picassoのようなものを使用して、表示したい画像を最適化することです。

それは非常に簡単です:あなたはメモリが不足していないだろう。このように

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

関連する問題