[转]Unable to add window -- token

2018-06-12  本文已影响18人  努力深耕Android的小透明

有一次在项目中用Dialog的时候出现了闪退,报了一个“Unable to add window -- token android.os.BinderProxy@164db98f is not valid; is your activity running?”的异常;

我出现异常的情况是进入一个页面,等这个页面的数据加载完后弹出一个dialog,但是我在dialog还没弹出的时候就finish掉了这个页面,这个时候就会出现如上的异常情况。出现这种情况,我的分析是在dialog还没有显示的时候就finish掉了它要显示的Activity,所以等它显示的时候,它要显示的Activity已经finish了;

解决办法如下:

//在dialog show之前判断一下
if (!getActivity(mLoadingDialog.getContext()).isFinishing()) {
            mLoadingDialog.show();
        }

private Activity getActivity(Context context) {
        while (!(context instanceof Activity) && context instanceof ContextWrapper) {
            context = ((ContextWrapper) context).getBaseContext();
        }
        if (context instanceof Activity) {
            return (Activity) context;
        }else
            return null;
    }
上一篇下一篇

猜你喜欢

热点阅读