今天下午碰到一个很蹊跷的异常:android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@438e7108 is not valid; is your activity running?
其实感到蹊跷的并不是因为异常本身。因为这个异常的提示的很明显,就是代码中调用了一个已经finish的activity。一般用这个activity来弹出对话框。
而真正令我感到迷惑的是:我在onCreate方法中保存了一个静态的Activity实例;
当程序按back后再进入,此时用这个instance实例来启动对话框就会出错。
于是,我在Activity onDestroy的时候把这个静态的实例置为null,这样实例就是活动的实例,没有被finish。问题得到解决。
但是如果不这样做,instance将不会被重新创建。不知为何。
其实感到蹊跷的并不是因为异常本身。因为这个异常的提示的很明显,就是代码中调用了一个已经finish的activity。一般用这个activity来弹出对话框。
而真正令我感到迷惑的是:我在onCreate方法中保存了一个静态的Activity实例;
当程序按back后再进入,此时用这个instance实例来启动对话框就会出错。
于是,我在Activity onDestroy的时候把这个静态的实例置为null,这样实例就是活动的实例,没有被finish。问题得到解决。
但是如果不这样做,instance将不会被重新创建。不知为何。
解决Android WindowManager异常
本文介绍了一个关于Android开发中遇到的WindowManager$BadTokenException异常问题。该异常通常出现在尝试使用已finish的Activity来弹出对话框的情况下。文章分享了解决方案,即在Activity销毁时将静态保存的实例置为null,确保使用的实例始终处于活跃状态。

被折叠的 条评论
为什么被折叠?



