android开发中遇到的android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.

本文介绍了一种在Android应用中因线程回调导致的界面已关闭但仍尝试操作界面元素而引发的异常现象,并提供了解决方案。
这是一个弹出对话框点击按钮对话框消失之后产生的异常,我在经过一翻调试后,确认了我的是线程毁掉带来的异常,平时我们使用Handler用来发送消息,比如mHandler.postDelayed(msg,1000);发送一条一秒之后进入到下面这个Runnable中:
public Runnable msg= new Runnable() {
		@Override
		public void run() {
                mHandler.postDelayed(msg,1000);
                 }
};

使其不断的进行循环用于处理事件;

这样一来他会不断的运行这个方法,尽管在你界面已经关闭,他也没有立刻停止,如果正好你在这里面调用了一个要用到界面的上下文context之类的方法,那么在你弹出对话框点击跳转到另一个界面的时候,你就有可能遇到我遇到的异常。

那么接下来是出处理方法:

public void onDestroy() {

super.onDestroy();
mHandler.removeCallbacks(msg);

}

移除掉你谢的线程回调方法,这样一来就不会因为线程回调给你带来找不到activity的问题了。

希望对遇到同一问题的人有帮助,也希望大家提供更多种情况一起分享!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值