我想在一个带drawable的自定义对话框中将图像设置为imageview。我有以下方法最好的方法来处理OOME android
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
this.setCancelable(false);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
ViewGroup vg = (ViewGroup)inflater.inflate(R.layout.popup, null);
image= (ImageView) vg.findViewById(R.id.image);
Uri uri = Uri.parse("android.resource://"+this.getActivity().getPackageName()+"/drawable/p1");
image.setImageURI(uri);
.
.
return builder.create();
}
它大部分时间运行良好,但会导致xxxx字节分配的内存不足。
我知道那是因为这个
image.setImageURI(uri);
什么是最好的方式来摆脱这个问题的?
更新::
I tried to recycle the bitmap by using this
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();
if(!bitmap.isRecycled()){
bitmap.recycle();
bitmap =null;
}
现在,如果我得到相同的图像dialong连续我有这样的错误:
Canvas trying to use a recycled bitmap Runtime Exception.
任何帮助表示赞赏
你能告诉我,如果我要重新调整和有效的对话上应用的图像?或者指点我一些资源?对话框被重复调用,并且我没有在显示器上使用任何静态变量来泄漏上下文。它只是弹出一个图像,这个OOME并不总是发生..只有很少的 – 2013-02-21 21:21:31
这不一定是这个对话框导致的问题。这意味着您的应用的内存使用总量过高。它恰好在这里失败了。你不能单独看这个对话框,你需要查看应用程序使用的所有内存。 – 2013-02-21 21:23:46
那么,活动的UI是一个按钮和textview,你会弹出一个。可绘制图像是1280x720图像。所以我在想这是导致错误。但图像的大小是150 kB。我已经感到沮丧,已经调试。我非常感谢您耐心回答我。 – 2013-02-21 21:40:07