我的 Crashlytics 中出现此错误,无法重现或找到原因,有人知道发生了什么吗?
我知道 badTokenException 是什么意思,但我无法控制 LicenseClientV3.java 来解决问题,它不是我的类。
Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@500b830 is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:1153)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:399)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:133)
at android.app.Dialog.show(Dialog.java:345)
at android.app.AlertDialog$Builder.show(AlertDialog.java:1131)
at com.pairip.licensecheck3.LicenseClientV3.lambda$showErrorDialog$2$com-pairip-licensecheck3-LicenseClientV3(LicenseClientV3.java:248)
at com.pairip.licensecheck3.LicenseClientV3$$ExternalSyntheticLambda4.run(:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
我在崩溃前查看了 Crashlytics 寄存器,但无法深入了解它的问题。
此问题的一种可能的解决方案是在显示对话框之前检查活动是否仍在运行。这可以通过调用活动对象上的 isFinishing() 方法来完成 以下是如何执行此操作的示例:
if (!((Activity) context).isFinishing()) {
// show dialog here
}
另一种可能的解决方案是使用应用程序上下文而不是活动上下文来显示对话框。这可以通过在创建对话框时调用 getApplicationContext() 而不是 this 或 getContext() 来完成 以下是如何执行此操作的示例:
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("My Dialog");
builder.setMessage("Hello, world!");
builder.show();
你必须反编译apk并删除pairip保护