首页 > 解决方案 > 将 iOS 应用程序发送到后台会导致整个应用程序延迟

问题描述

我有一个使用计时器的应用程序,该计时器每 0.01 秒运行一次“更新”功能。该功能分析环境声音并在听到它正在收听的某些音调时执行操作。

该应用程序运行良好,直到我将其发送到后台(即点击主页按钮或双击)。

当我重新打开应用程序时,它的工作原理完全相同,除了大约 1-2 秒的延迟。当我的应用程序听到它正在听的声音时,我的应用程序在日志中打印出一条消息,它仍然总是能听到它,它不会打印大约两秒钟的延迟。

我观察到的事情:

  1. 计时器仍然正常运行,一切似乎都运行良好,就好像手机所体验的硬件与实际应用程序正在运行之间存在延迟。

  2. 在我将其发送到后台模式之前和之后,CPU 都保持在 40-50% 之间。

我的应用程序对时间非常敏感,因此即使延迟半秒也会破坏交易。

标签: iosmultithreadingperformancetimer

解决方案


这个问题与我使用的 AudioKit 框架有关。每当您离开应用程序时,您都必须运行try? AudioKit.stop(),然后当您回来时,您可以try AudioKit.start()再次运行,否则所有音频内容都会延迟。


推荐阅读