【问题标题】:iOS: Background capability not working (Terminated due to signal 9.)iOS:后台功能不起作用(由于信号 9 而终止。)
【发布时间】:2021-03-31 20:19:32
【问题描述】:

我正在开发一个包含以下功能的项目。

  1. 每 60 秒获取一次位置并发送到服务器。
  2. 音频/视频通话。

为项目设置的背景模式如下所述

iOS:14.1 X代码:12.1 斯威夫特:4

问题: 每当我将应用程序置于后台时,它都会获取位置或调用某个时间,然后我会在日志中收到以下错误。每当我在进行音频通话时将应用程序置于后台时,音频会工作一段时间,几秒钟后会出现以下错误。

Message from debugger: Terminated due to signal 9.

当应用程序在前台时,一切都可以正常工作。应用程序获取位置并调用作品。

请建议我还需要做什么或我做错了什么。

【问题讨论】:

  • 听起来你正在从 Xcode 运行时进行测试。
  • @matt 是的,正确的。但即使我没有测试它也不起作用。应用正在重新启动。
  • 那么你需要看看它为什么会重新启动。听起来您的应用由于某种原因在后台被杀死。
  • @matt 是的,我检查了但无法找到终止的原因。我在 .ips 文件中收到此消息 48 秒 cpu 时间超过 53 秒(平均 91% cpu),超过 80% cpu 超过 60 秒的限制
  • 我不知道你想从我这里得到什么。您没有显示任何代码。但是您知道问题的根源(后台 CPU 使用率过多),并且您知道如何探索 CPU 使用率(使用 Instruments)。这只是做工作的问题。

标签: ios swift xcode background-mode


【解决方案1】:

您的问题的评论线程表明终止是由于后台 CPU 使用率过高。

根据您的上一条评论,您似乎不知道从哪里开始使用 Instruments(我去过那里),正如另一位评论者推荐的那样,所以我将提供一些有关如何开始进行 CPU 分析的基本信息在仪器中,然后您可以在线查找更详细的教程(Apple 的这个 WWDC 视频是一个很好的起点:https://developer.apple.com/videos/play/wwdc2019/411/#:~:text=Instruments%20is%20a%20powerful%20performance,optimize%20their%20behavior%20and%20performance

以下假设使用 Xcode 12.1 及其对应的 Instruments 版本 12.1,但最近的版本应该非常相似(可能在旧版本中按钮的位置略有不同等):

  1. 在 Xcode 中打开您的应用项目,然后在真实设备上运行它(模拟器会为您提供有关 Mac 的 CPU 使用情况的信息,并且与真实设备有很大不同)。
  2. 转到左侧边栏中的调试导航器 (Cmd+7),在边栏中选择 CPU,然后单击右上角的Profile in Instruments 按钮。
  3. 如果询问,请选择“配置当前会话”。
  4. 仪器应自动启动并开始录制。
  5. 在您的设备上重现该问题。

现在了解 Instruments 中显示的内容:

  1. 顶部窗格(移动图表)显示一段时间内的 CPU 使用率。
  2. 底部窗格显示已运行进程的调用树。

那里有很多信息,所以您想查看窗口最底部的Filter and configuration bar,并首先选择调用树菜单中的所有选项。看起来像这样:

以下是每个选项的简短说明:

  • 按线程分离:按线程显示进程以帮助诊断过度工作的线程
  • 反转调用树:反转堆栈以首先显示底部部分,这可能对故障排除更有用
  • 隐藏系统库:删除系统库进程,从而减少噪音,您可以只关注应用的代码
  • 扁平递归:将递归调用合并到一个条目中
  • Top Functions:结合了被调用函数的使用时间,加上从该函数调用的函数所花费的时间。这可以帮助您找到 CPU 使用率最高的方法。

现在您已经获得了仅适用于您的应用的昂贵 CPU 方法的过滤列表,选择一行可以在调用树视图右侧的 Extended Details 窗格中为您提供更多信息。这可以准确地向您显示您的代码文件在哪个方法中运行,甚至可以在 Xcode 中将您带到它(只需单击几下按钮)。

希望这足以让您开始,认识到您的代码中可能导致您的应用被终止的一些潜在问题区域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多