Unable to add window

Unable to add window — token android.os.BinderProxy is not valid; is your activity running? 错误分析和解决办法

错误原因

Unable to add window — token android.os.BinderProxy is not valid; is your activity running? 就是在你使用Dialog的时候设置的context对象发生了改变,比如说当你的Activity消失了而你的后台异步任务还要显示这个Activity里的Dialog,就会出现这个Bug。

解决办法

  1. 保证你的Dialog显示的时候Activity是Runing的。

    我遇到这个问题就是我在上图片的时候,不小心忘记设置上传过程中要一直显示对话框,不让用户返回。这就造成了用户在上传多张图片的过程中可以返回,退出当前Activity,而这时候如果上传有失败的图片,我还想要显示一个Dialog提示上传失败,就出现了这个Error。

  2. 显示Dialog之前判断Activity的状态

1
2
3
4
if(!((Activity) context).isFinishing())
{
//show dialog
}