【问题标题】:Firebase stacktrace does not show where in the code the problem is occuringFirebase 堆栈跟踪未显示代码中出现问题的位置
【发布时间】:2020-01-28 13:32:44
【问题描述】:

考虑下面的 Firebase 崩溃:

无法添加窗口令牌android.os.BinderProxy 无效;您的活动正在运行吗?

此崩溃发生在ViewRootImpl.java但是,Firebase 没有在我自己的代码中引用任何部分。我如何知道我的代码中发生了这种情况?

【问题讨论】:

  • 你好@EzraLazuardy 我理解这个问题,但问题是它发生在代码中的什么位置,因为我只有 Firebase 崩溃而没有参考我自己的源代码。
  • @JimClermonts 在 pause() 方法中执行此操作 dialog.cancel();在每个屏幕(活动、片段等)中,您可以使用开发人员模式测试这种情况 => 不要保持活动。启用不要在开发人员模式下保留活动功能,并在对话框打开时打开您的应用并更改屏幕,或者在对话框显示您遇到相同的崩溃时按主页按钮:)

标签: android firebase kotlin crashlytics


【解决方案1】:

这很可能是因为您试图在后台线程执行后显示一个对话框,而 Activity 正在被销毁。

【讨论】:

  • 可能我的问题还不够清楚,我已经改了:Firebase stacktrace 没有显示代码中哪里出现了问题
【解决方案2】:

在 pause() 方法 dialog.cancel() 中执行此操作;

【讨论】:

  • 可能我的问题还不够清楚,我已经改了:Firebase stacktrace 没有显示代码中哪里出现了问题
  • @JimClermonts 但是在每个对话框屏幕上都这样做,你可能永远不会遇到我在同一个问题上使用它解决的那种类型的崩溃兄弟
  • 这是一个庞大的代码库。在任何地方添加此检查是一个繁琐的过程。我希望有更好的解决方案。但我认为没有:(。
【解决方案3】:

在关闭对话框之前检查以下条件 -

if(!isActivityFinishing()){
    dialog.dismiss();
}

【讨论】:

  • 可能我的问题还不够清楚,我已经改了:Firebase stacktrace 没有显示代码中哪里出现了问题
  • 根据堆栈跟踪,您可能会在活动完成时显示或关闭对话框,这就是为什么堆栈跟踪显示“您的活动正在运行吗?”因此需要在显示或显示对话框之前检查条件 isActivityFinishing。
  • 这是一个庞大的代码库。在任何地方添加此检查是一个繁琐的过程。我希望有更好的解决方案。找到发生这种情况的确切代码行。
猜你喜欢
  • 2023-03-09
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-05-02
相关资源
最近更新 更多