为啥我的 iPhone 应用程序在后台继续运行?

Posted

技术标签:

【中文标题】为啥我的 iPhone 应用程序在后台继续运行?【英文标题】:Why does my iPhone App continue in the background?为什么我的 iPhone 应用程序在后台继续运行? 【发布时间】:2011-11-22 09:51:58 【问题描述】:

我编写了我的第一个 iPhone 应用程序,并设法将它放入 App Store。后来我发现了一个发生在真实设备上但不在我的模拟器上的错误。我已经提交了一个修复程序(更改了 plist 以防止应用程序在后台运行),但我真的不明白为什么会这样。

我的应用程序允许用户录制声音字节,但是在他们录制时,他们可以使用 iPhone 的主页按钮将应用程序移至后台,然后如果他们不重启手机或该应用程序不会崩溃。

从我所阅读的所有内容中,我的印象是,这不应该发生,因为如果你想这样做,你必须特别要求背景音频,但现在在我看来你必须特别要求禁用它。

谁能给我解释一下?

【问题讨论】:

您在后台录制或不允许后台应用的问题是什么? 我的问题是我不明白为什么在我没有请求权限的情况下它会在后台记录。 【参考方案1】:

Apple 的ios App Programming Guide 中描述了 iOS 应用生命周期。

应用程序有机会在暂停之前保存数据并以其他方式停止不需要运行的事物。您可以使用beginBackgroundTaskWithExpirationHandler: 请求额外的时间。

如果您希望您的应用在进入后台时停止执行“正常操作”,那么您需要检测应用状态转换并自行停止。

【讨论】:

所以我可以在后台录制音频,但播放音频是一种特殊情况,您需要添加权限吗? 在暂停之前,您只有大约 5 秒的时间进行清理。但是,如果您想播放音频,可以在您的Info.plist 文件中将UIBackgroundModes 键设置为audio,并成为一个长时间运行的后台任务。

以上是关于为啥我的 iPhone 应用程序在后台继续运行?的主要内容,如果未能解决你的问题,请参考以下文章

可以运行一个应用程序然后重新启动 iPhone 吗?

外部附件可以在 iPhone 的后台运行吗?

转到后台后恢复应用程序

iPhone 应用程序可以在后台运行多长时间?

为啥有人说Apple 不允许iphone运行后台任务?

iphone - 在后台播放音频流