关键字:
android.View.WindowManager$BadTokenException:Unable to add window -- token android.os.BinderProxy@2eaceca3
这个错误真的是太常见了,原因就是dialog的show(注意不是创建)依赖的是窗体的context,实际就是activity,所以当activity finish了以后调用dialog的show方法就会出错。
解决方法也很简单:
dialog show之前判断下窗体是否还存在:
if(null != context && context instanceof Activity && !((Activity) context).isFinishing()) {
builder.show();
}
扩展:popwindow也是需要依托窗体存在的。
有篇文章不错:http://dimitar.me/android-displaying-dialogs-from-background-threads/