【问题标题】:Android App hangs without ANRAndroid 应用程序在没有 ANR 的情况下挂起
【发布时间】:2016-12-15 07:16:36
【问题描述】:

有时,当我的应用通过推送收到新订单时,它会挂起。现在奇怪的是系统 UI 工作正常,应用程序没有响应但 Application Not Responding 对话框从未出现。

我不知道如何调试它为什么挂起。不会在每次收到新订单时挂起,但很少挂起。

关于为什么 ANR 可能不会到来的任何指示?如何调试?

【问题讨论】:

  • 接收推送后尝试实现线程进行数据操作
  • 如果你的 UI 线程 5 秒内没有得到任何响应,则显示 ANR,所以默认情况下使正常运行完全在单个线程上“UI 线程”或“主线程”跨度>
  • 我无法重现该问题,因为它很少发生。当某些事件发生时会更新。

标签: android


【解决方案1】:

您应该在monitor 中观察应用行为。如果 CPU / 内存使用率过高,则可能表示内存泄漏或 CPU 密集型任务(如未清除的TimerTask 或同一Runnable 的多个实例)导致应用程序在没有响应的情况下无响应ANR。

如果确实是内存泄漏,您可以使用LeakCanarymonkey 进一步调查,以进一步缩小泄漏的确切原因。

我曾经遇到过一个动画进度对话框,它导致巨大的内存泄漏 CPU 过载,导致我的应用程序挂起 没有抛出异常。

【讨论】:

  • 就这样,应用再次挂起。检查了内存使用情况,果然有一个 ~70mb 的峰值。将添加 LeakCanary 并深入了解此内存泄漏,非常感谢您指出正确的方向
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 2019-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
相关资源
最近更新 更多