我面临着一个非常烦人的 Android 崩溃,该崩溃发生在大约 1% 的生产会话中,并且应用程序始终在后台运行。
Fatal Exception: android.app.RemoteServiceException: Attempt to invoke virtual method 'int com.android.server.wm.TaskDisplayArea.getDisplayId()' on a null object reference
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2054)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:250)
at android.app.ActivityThread.main(ActivityThread.java:7755)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
Run Code Online (Sandbox Code Playgroud)
从这个堆栈可以清楚地看出,它来自内部 android MainLooper 操作...但是缺乏额外的信息,我很难发现到底是什么
有谁知道这是什么问题以及如何解决它?
小智 0
对于这一级别的信息,我们无能为力。我唯一能看到的是:
android.app.RemoteServiceException: Attempt to invoke virtual method 'int com.android.server.wm.TaskDisplayArea.getDisplayId()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
getTaskDisplayArea()在某个阶段,您的代码正在调用(或使用调用的库)com.android.server.wm。这将返回空值。然后它尝试使用它来getDisplayId().
(其余的错误行仅表明它不在主线程中)
TaskDisplayArea当 UI 已被销毁或尚未创建时,无论您在何处使用(或调用它的库),都可能会被调用。
这种罕见情况表明它可能是您的 UI/显示元素的完全后台重新启动...如果我不得不猜测可能是由于多任务处理时 Android 操作系统内存清理触发器或用户反复更改方向等引起的。
如果您提供有关使用代码com.android.server.wm或布局的位置的更多详细信息,您可能会获得有关如何使后台线程安全的更多帮助。根据您实际执行的操作,您可能最终会捕获异常并稍后重试,但某些视图将允许您将信息发布到主线程,我不知道是否可以TaskDisplayArea。
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |