android.view.WindowManager $ BadTokenException:无法在自定义Dialog打开时添加窗口

时间:2016-08-25 10:08:28

标签: java android

我尝试打开自定义对话框时遇到RuntimeException,即使我检查活动是否正在运行。

这是一个自定义启动画面,它会在启动应用时触发。第一次发布时一切顺利,但当我的应用程序进入后台并重新打开时,就会发生崩溃。

我明白了:

android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@e9b1e4 is not valid; is your activity running?                                                                                              
at android.view.ViewRootImpl.setView(ViewRootImpl.java:571)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at android.app.Dialog.show(Dialog.java:319)
at com.mehcode.reactnative.splashscreen.SplashScreen$1.run(SplashScreen.java:23)

我的代码如下:

private static Dialog mSplashDialog;

/**
 * Show the splash screen.
 */
public static void show(final Activity activity) {
    activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (!activity.isFinishing()) {
                mSplashDialog = new Dialog(activity, R.style.RNSplashScreen_SplashTheme);
                mSplashDialog.setCancelable(false);

                if (!mSplashDialog.isShowing()) {
                    mSplashDialog.show();
                }
            }
        }
    });
}

我缺少什么想法?

提前感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

添加权限:

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

解决了React-Native的问题。