java – 致命异常:android.view.WindowManager $BadTokenException无法添加窗口 – 令牌无效;你的活动在运行吗?

我知道这个问题已经讨论了几次,但相信我,我从来没有得到任何答案.
在我的主要活动中,我使用了少量的Dialog来通知用户一些操作,但我在小米设备上主要(特别是96%)得到了这个特定的错误.
`

Fatal Exception: android.view.WindowManager$BadTokenException
Unable to add window -- token android.os.BinderProxy@f839de9 is not valid; is your activity running?
android.view.ViewRootImpl.setView (ViewRootImpl.java:697)
android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:347)
android.view.WindowManagerImpl.addView (WindowManagerImpl.java:94)
android.widget.Toast$TN.handleShow (Toast.java:463)
android.widget.Toast$TN$2.handleMessage (Toast.java:346)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:163)
android.app.ActivityThread.main (ActivityThread.java:6377)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:904)

com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

我介绍了每个Dialog Show方法

if (!MainActivityNew.this.isFinishing())
dialogDownload.show();

`
但我仍然在发布模式下出现这个错误,主要是在小米设备上
使用Android版本7,请帮助我在过去的一个月里坚持这个问题.

以下是来自Firebase Crashlytics的一些数据

设备
100%小米
操作系统
100%Android 7
设备状态
4%的背景

解决方法:

这个问题不是因为Dialog而是Toast.主要是这个Toast问题是在android 7.1版本中,其中上下文变为null.这位先生Solution创造了一个解决方案.我已经测试过,这项工作非常顺利.你可以试试这个.

 if (android.os.Build.VERSION.SDK_INT == 25) {
                ToastCompat.makeText(context, message, Toast.LENGTH_SHORT)
                        .setBadTokenListener(toast -> {
                            Log.e("failed toast", message);
                        }).show();
            } else {
                Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
            }
上一篇:xiaomi_soar


下一篇:redis之微博共同关注-----集合交集