token android.os.BinderProxy@163442e0 is not valid; is your activity running
2017-09-28 15:34
525 查看
最近项目中遇到这个异常,发生在dialog.show()的时候。
在第一次进入activity中显示正常,回退到前一个activity,再第二次进入该activity的时候就会崩溃,报错。
网上查了好多,也试过各种办法,都不能很好的解决,包括判断isFinishing,置空等,但是基本能断定问题发生在activity上
然后打印log,在activity的oncreate、onresume和调用dialog.show()的方法中都打印isFinishing()状态,发现结果不一样,而这个是不应该的
oncreate和onresume中是没有问题的,那问题就应该出在调用dialog.show()的那个方法(就叫方法A吧)中了。
仔细看代码,发现方法A是一个监听回调,跟oncreate相比属于外来户,然后跟踪到这个监听中,发现初始化监听的时候需要传递一个activity,就是dialog显示需要依附的activity,
由于代码不合理,导致每次进入activity需要显示dialog的时候,监听中拿到的activity都是第一次创建的实例,所以第一次能成功,此后都报这个错。
改正的方法就是在监听中添加让activity置空的方法,并在activity销毁的时候调用,这样每次初始化传入的都是当前的activity,问题解决。
还会出现一些别的现象,比如在这个监听方法中设置图像或者文字,明明执行了语句,控件也不为空,但是就是无效,
比如莫名其妙的空指针等。
从根源上解决了以后,提到的各种毛病就都没有了。
因此这个异常的根源大概就是:显示时控件拿到的activity 与 当前的activity 不一致。
在第一次进入activity中显示正常,回退到前一个activity,再第二次进入该activity的时候就会崩溃,报错。
网上查了好多,也试过各种办法,都不能很好的解决,包括判断isFinishing,置空等,但是基本能断定问题发生在activity上
然后打印log,在activity的oncreate、onresume和调用dialog.show()的方法中都打印isFinishing()状态,发现结果不一样,而这个是不应该的
oncreate和onresume中是没有问题的,那问题就应该出在调用dialog.show()的那个方法(就叫方法A吧)中了。
仔细看代码,发现方法A是一个监听回调,跟oncreate相比属于外来户,然后跟踪到这个监听中,发现初始化监听的时候需要传递一个activity,就是dialog显示需要依附的activity,
由于代码不合理,导致每次进入activity需要显示dialog的时候,监听中拿到的activity都是第一次创建的实例,所以第一次能成功,此后都报这个错。
改正的方法就是在监听中添加让activity置空的方法,并在activity销毁的时候调用,这样每次初始化传入的都是当前的activity,问题解决。
还会出现一些别的现象,比如在这个监听方法中设置图像或者文字,明明执行了语句,控件也不为空,但是就是无效,
比如莫名其妙的空指针等。
从根源上解决了以后,提到的各种毛病就都没有了。
因此这个异常的根源大概就是:显示时控件拿到的activity 与 当前的activity 不一致。
相关文章推荐
- 关于Android平台上面is not valid; is your activity running?
- Anroid 异常:is not valid; is your activity running?
- Unable to add window is not valid; is your activity running?
- Anroid 异常:is not valid; is your activity running?
- Anroid 异常:is not valid; is your activity running?
- Unable to add window --token is not valid; is your activity running?
- Activity has leaked window that was originally added -界面退出时未关闭对话框异常 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? -
- Anroid 异常:is not valid; is your activity running?
- PopupWindow出现Unable to add window -- token null is not valid; is your activity running?
- view.WindowManager$BadTokenException: Unable to add window…is not valid; is your activity running?
- - Unable to add window -- token null is not valid; is your activity running?
- BinderProxy@45d459c0 is not valid; is your activity running?(转载)
- BUG popupwindow的使用 token null is not valid; is your activity running?
- Unable to add window — token android.os.BinderProxy is not valid; is your activity running?
- BadTokenException:Unable to add window …… is your activity running?is not valid; is your activity ru
- Unable to add window -- token android.os.BinderProxy@XXX is not valid; is your activity running?
- Android 后台线程弹对话框导致程序崩溃(is not valid; is your activity running)(dialog总是牺牲)
- popupwindow使用之异常-Unable to add window -- token null is not valid; is your activity running?
- Anroid 异常:Unable to add window …… is not valid; is your activity running?
- PopWindow Unable to add window -- token null is not valid; is your activity running