代码之家  ›  专栏  ›  技术社区  ›  user13267

如何检查是什么扼杀了我的音频放大器应用程序?(IOS,目标C)

  •  1
  • user13267  · 技术社区  · 7 年前

    我有一个iOS应用程序,它从电话麦克风中获取音频,实时处理麦克风数据,并将结果发送到耳机

    在“项目-功能-背景模式”中,我选择了“音频”、“AirPlay”和“画中画”。

    我希望应用程序在后台(用户按主屏幕按钮)和使用锁定按钮锁定手机屏幕时继续读取麦克风数据并向耳机发送音频。

    所有这些都在发生,所以我认为应用程序权限没有任何问题,但是我注意到,在应用程序回接后,它会突然被杀死,通常不到一分钟。

    我设法在Xcode控制台中捕获了一个在后台被杀的应用程序实例,消息是

    Message from Debugger: terminated due to signal 9  
    

    在谷歌中四处查看表明,这仅仅意味着应用程序被使用sigkill的操作系统破坏了。

    有没有办法知道为什么这个应用程序被杀了?是否不可能让应用程序在后台长时间运行?在我启用之前 Audio, AirPlay and Picture in Picture 背景模式下,当我按下Home(主页)按钮或Screen Lock(屏幕锁定)按钮时,音频就会停止。我假设,因为当我按下Home(主页)按钮时,音频一直在运行,这意味着我确实能够在后台运行麦克风/扬声器(如果必须),并且有音乐播放器和录音机应用程序在后台工作,直到用户特别关闭它们。

    我如何才能找出我的应用程序自动关闭的确切原因,以及在用户关闭它之前,我如何才能让它无限期地在后台运行?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Kegluneq    7 年前

    通过xcode安装应用程序后,正常运行它(而不是在xcode中运行),让它崩溃。然后连接电话,转到xcode->窗口->设备和模拟器->查看设备日志。然后找到最近的车祸。

    对我来说,你的问题听起来像是CPU使用过度。后台应用程序不能长时间(大约一分钟)使用超过80%(IIRC)的设备CPU,否则将被系统杀死。如果这是你的情况,你只需要优化你的代码,而不是占用CPU。

    推荐文章