android - ActivityThread.handleDestroyActivity 中的“DecorView 未附加到窗口管理器”问题
问题描述
最近我收到了来自 Crashlytics 的一些错误,似乎在 Activity 销毁时抛出了 IllegalArgumentException:
Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@8149dd0[] not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:552)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:433)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:131)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4645)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1757)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
我在使用 AsyncTask 和 ProgressDialog 时做了一些保护,但这看起来不像是dismiss() 问题。
近 80% 是在 Android API 8.x 中抛出的
有谁知道如何解决这个问题?
解决方案
这可能是 NightMode 的问题,我确实知道究竟是什么原因造成的,但是当我使用时:
AppCompatDelegate.setDefaultNightMode(night ?
.MODE_NIGHT_YES :
.MODE_NIGHT_NO);
替换原来的:
getDelegate().setLocalNightMode(night ?
.MODE_NIGHT_YES :
.MODE_NIGHT_NO);
崩溃就消失了。
我知道这可能不是一个好的答案,但如果有一天你遇到同样的问题,这可能会给你一些提示。
推荐阅读
- html - 引导弹出框间距
- c# - 从一个位置访问代码中的潜在更改
- c# - C# - Dictionary 和 Object[] 之间的三元运算符
- java - Apache Camel 多条 SQL 语句
- image - 在锚标签图像中添加变焦镜头功能
- javascript - Javascript 检查 >= 0 不是 null 或 undefined 或 ''
- css - 除非单击父类别,否则如何隐藏子类别?
- python - 如何将表格从 csv 文件渲染到 django 模板中?
- html - 标题和形状分隔符之间的 HTML/CSS 间隙
- postgresql - Kubernetes 上的 Airflow:Pod 能够在 PostgreSql 上运行 initdb,但随后的 create_user 以 SQLite 为目标