iOS 7什么时候关闭我的应用程序?

时间:2014-07-02 15:10:46

标签: ios ios7

我有一个在后台运行的应用。调用此应用程序以便能够更新然后进入睡眠状态。

出于某种原因,它会在几个小时后停止工作。

我有一些理论,但我找不到关于它们的文档。

  1. 当内存不足时iOS关闭应用程序。
    • 有谁知道此过程中使用的订单?
    • 它是选择运行时间更长的应用程序,占用更多内存,还是只是随机关闭应用程序以获取所需的内存?
  2. 应用程序可能在后台运行是否有最长时间限制?
  3. NSTimer是否有最大重复次数?
  4. 如果降低电池电量以节省电量,iOS是否会在后台关闭应用程序?
  5. 如果有人可以回答这些问题,或者提供一些有关它们的信息,那就太棒了。

    这些理论建立在客户报告的基础上。

3 个答案:

答案 0 :(得分:1)

Apple Docs中,您可以找到允许的后台执行模式的非常分析性的描述,在这种情况下,您可以使用每种模式以及一些最佳实践。如果您的应用程序不遵循上述任何内容,则事情变得相当随意。 AFAIK无法知道操作系统何时会杀死您的应用程序或做任何事情来阻止它。

答案 1 :(得分:1)

逐点回答(以简单的方式):

  1. 在后台运行的应用程序在内存不足情况下应该被操作系统杀死,但其应用程序委托应该收到applicationWillTerminate消息。
  2. 后台正在运行的应用程序没有正式的时间限制。
  3. NSTimer只能是两种中的一种:重复或非重复。您可以参考NSTimer class reference documentation获取此类方面的证据。
  4. 如果我能正确记住,应用程序无法通过Apple政策执行此操作。如果设备电池电量不足,则不得干预打开的应用程序以延长电池使用时间。
  5. 有关应用后台运行模式的完整说明,请参阅Apple开发人员文档at this link

    如果您的应用必须在后台负责任地运行,那么理解多任务处理和采用正确的策略是一个很好的起点。

答案 2 :(得分:0)

首先使用XCode Organizer查看崩溃报告。崩溃报告将有一个异常代码,显示应用程序消失的原因。

如果您遇到后台操作问题,正如问题中暗示的那样以及spassas的回答,您将在崩溃报告中看到异常代码0xbad22222。

有关详细信息,请参阅the Apple doc on exception codes