gpt4 book ai didi

安卓.view.WindowManager$BadTokenException : Unable to add window -- at Toast

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:48:59 26 4
gpt4 key购买 nike

当我在我的 Android 应用程序上频繁执行某些操作(我的假设,是由于 Toast 消息)时,出现以下错误。我没有得到这个问题的确切位置。我可以从某人那里得到帮助来解决这个问题吗?

 --------- beginning of crash
10-04 16:13:49.250 6541-6541/com.test.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.myapp, PID: 6541
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@e2815e is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.widget.Toast$TN.handleShow(Toast.java:459)
at android.widget.Toast$TN$2.handleMessage(Toast.java:342)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)

注意:这种崩溃并不总是会发生。

最佳答案

在将 Context 传递给 Toast 之前,您应该始终检查您将要使用的上下文的有效性。在我的应用程序中,我使用了我制作的上下文检查器方法:

public static boolean isContextValid(Context context, Fragment fragment) {
if (context instanceof Activity) {
Activity activity = (Activity) context;
if (activity.isFinishing() || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed())) {
return false;
}
}

return context != null && (fragment == null || (fragment.isAdded() && !fragment.isRemoving());
}

您可以只传递一个上下文,如果您当前的上下文是一个 fragment ,也可以传递一个 Fragment。此方法检查上下文是否为 Activity,在这种情况下,我们检查 Activity 是否正在完成/销毁。

如果你想在 fragment 生命周期之后显示 toast,还要传递给当前 fragment 的方法,这样我们就可以判断 fragment 是否仍然可见并附加到 Activity 。

赠送 ANDROID 7.1

在 API 25 上,这还不够,有时设备仍会因您提供的堆栈跟踪而崩溃。

This repository可能是解决方案,因为它将错误调用包装在 try/catch 子句中。当然,这不是最好的做法,但至少解决了 7.1 设备的这个烦人的崩溃问题。

关于安卓.view.WindowManager$BadTokenException : Unable to add window -- at Toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com