android.view.WindowManager$BadTokenException:~~

▼魔方 西西 提交于 2019-12-03 15:53:24

因为使用了AsyncTask 异步线程在线程完成以后的onPostExecute方法里面弹出窗口。 
这个时候如果用户在onPostExecute调用之间按了返回按钮,activity已经onDestory了, 
那么就会报出android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4479b390 is not valid; is your activity running? 

解决方法一在弹出窗口之前用Activity的isFinishing判断一下Activity是否还存在 

Java代码  

  1. protected void onPostExecute(Object result) {  

  2.     if (!isFinishing()) {  

  3.         showDialog(MY_DIALOG_ID);  

  4.     }  

  5. }  



解决方法二在show的时候捕获一下异常。


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!