【问题标题】:iOS app got killed with "Message from debugger: Terminated due to signal 9" after 2 minutes running in backgroundiOS 应用程序在后台运行 2 分钟后因“来自调试器的消息:因信号 9 而终止”而被杀死
【发布时间】:2017-07-07 17:05:12
【问题描述】:

我正在开发类似导航的应用程序。位置管理器可以很好地在前台和后台获取设备的当前位置。

无论多长时间,它在前台都能正常工作。但是,当应用程序进入后台模式时,位置管理器最初运行良好。但大约 2 分钟后,应用退出,控制台显示错误消息:“来自调试器的消息:由于信号 9 而终止。”

我搜索了错误消息,但仍然找不到解决方法。 Quitting app causes error "Message from debugger: Terminated due to signal 9"

我注意到 CPU 使用率非常高,在后台模式下约为 105%。这可能是操作系统发送 KILL 信号的原因。但即使我降低了位置管理器的准确度(但出于导航目的,我最终仍需要最高准确度),问题仍然存在。

所以我真的很想知道这些健身应用是如何设法在后台跟踪用户的位置而不会被操作系统杀死的。

【问题讨论】:

  • 针对有类似问题的人。我通过使用仪器解决了这个问题,我在导航堆栈中找到了一个未终止的 viewController 的简单动画。在后台 VC 堆栈中的一个简单动画不知何故导致 CPU 使用率达到 100%。
  • 你有什么解决办法吗?我在 iOS 11.2.6 版本中遇到了同样的问题。

标签: ios swift background locationmanager


【解决方案1】:

我认为您的问题是由于复杂的图形用户界面造成的,即使应用程序在后台,它也会每秒刷新一次

为防止应用在后台被杀死,当应用处于后台模式时,请停止使用高 CPU 做一些事情,例如渲染图像。

【讨论】:

  • 谢谢!是的,我刚刚发现除了获取新位置之外,该应用还可以做很多其他事情。
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 2021-03-02
  • 1970-01-01
  • 2017-07-08
  • 2015-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多