您的位置:首页 > 移动开发 > Android开发

android WindowLeaked异常的解决方法

2016-06-02 14:21 597 查看
 前些阵子在搞一个app的时候,调用了自定义的Dialog 来作为提示框,但是,总是出现window 窗口泄漏的异常

,后来,重新去看了一下源代码,再去查了一下资料,终于解决了这个问题。
 原来,  每一个android的activity都有一个windowManager的窗口管理器,对应的每一个依附在activity上面的对话框,也有一个windowManager,如果,我在finish了activity的时候,没有对这些窗口进行处理,那么就会出现window leadked 这个异常。下面贴一下我写的一个说明程序。
下面这段程序是会发生window leaked异常的。

private void initview() {
dialog=new Dialog(context, R.style.myDialogTheme);
View view=View.inflate(context,R.layout.return_pre_dialog,null);
dialog.setContentView(view);
message= (TextView) view.findViewById(R.id.message);
cancle= (Button) view.findViewById(R.id.security_cancle);
sure= (Button) view.findViewById(R.id.security_ok);
cancle.setOnClickListener(this);
sure.setOnClickListener(this);
dialog.show();
}

@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.security_ok:
listener.returnPreClickListener();
dialog.dismiss();//要加上这句,不然会报WindowLeaked异常
break;
case R.id.security_cancle:
dialog.dismiss();
break;
}
}

当 dialog 结束的时候要进行 dismiss()函数的处理。

加上这行代码就行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息