ios - 将 iOS 应用程序发送到后台会导致整个应用程序延迟
问题描述
我有一个使用计时器的应用程序,该计时器每 0.01 秒运行一次“更新”功能。该功能分析环境声音并在听到它正在收听的某些音调时执行操作。
该应用程序运行良好,直到我将其发送到后台(即点击主页按钮或双击)。
当我重新打开应用程序时,它的工作原理完全相同,除了大约 1-2 秒的延迟。当我的应用程序听到它正在听的声音时,我的应用程序在日志中打印出一条消息,它仍然总是能听到它,它不会打印大约两秒钟的延迟。
我观察到的事情:
计时器仍然正常运行,一切似乎都运行良好,就好像手机所体验的硬件与实际应用程序正在运行之间存在延迟。
在我将其发送到后台模式之前和之后,CPU 都保持在 40-50% 之间。
我的应用程序对时间非常敏感,因此即使延迟半秒也会破坏交易。
解决方案
这个问题与我使用的 AudioKit 框架有关。每当您离开应用程序时,您都必须运行try? AudioKit.stop()
,然后当您回来时,您可以try AudioKit.start()
再次运行,否则所有音频内容都会延迟。
推荐阅读
- azure - 如何使 azure devops 发布管道单击一次
- python - Opencv(opencv-contrib)在使用对象检测模块(cv2.dnn.readNet)后改变图像的颜色
- ios - 操作无法完成。(OSStatus 错误 561015905。)
- spring-boot - 将 spring-cloud-config 与 spring-cloud-bus 一起使用
- vue.js - 首次加载 vue js 2.0 时登录页面重定向到 404
- reactjs - 如何将 React ErrorBoundary 与 redux-observable 一起使用?
- python - python 5 d矩阵写入nc文件
- c# - 用户检索器在 Serenity 框架中返回 null
- c++ - 使用win32项目无法在少数windows机器上建立IPC连接
- pandas - 合并两个数据框而不复制列