iOS 7何时关闭我的应用程序?

iOS 7何时关闭我的应用程序?,ios,ios7,Ios,Ios7,我有一个在后台运行的应用程序。调用此应用程序是为了能够进行更新,然后进入睡眠状态 出于某种原因,它在几个小时后停止工作 我有一些理论,但找不到有关它们的文件 当内存不足时,iOS会关闭应用程序。 有人知道这个过程中使用的顺序吗 它是选择运行时间更长、占用更多内存的应用程序,还是只是随机关闭应用程序以获得所需内存 应用程序在后台运行是否有最长时间限制 NSTimer是否有最大重复次数 如果电池电量降低以节省电量,iOS是否会关闭后台应用程序 如果有人能回答这些问题,或者提供一些关于它们的信息,

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

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

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

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


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

    在中,您可以找到对允许的后台执行模式的非常有分析性的描述,在这种情况下,您可以使用每种模式,还可以遵循一些最佳实践。如果你的应用程序没有遵循上述任何一点,那么事情就会变得相当随意。很抱歉,无法知道操作系统何时会关闭你的应用程序或采取任何措施阻止它。

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

    如果后台操作有问题,正如spassas的问题和答案所暗示的,您将在崩溃报告中看到异常代码0xbad22222

    有关更多详细信息,请参阅。

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

  • 在后台运行且内存不足的应用程序应被操作系统终止,但其应用程序委托应收到
    applicationWillTerminate
    消息
  • 官方没有对后台运行的应用程序规定时间限制
  • NSTimer
    只能是两种类型中的一种:重复或不重复。关于这方面的证据,你可以参考
  • 根据苹果的政策,如果我没记错的话,这个应用程序不能做到这一点。如果设备电池电量不足,则不得干预打开的应用程序以延长电池续航时间
  • 有关应用程序后台运行模式的完整描述,请参阅Apple开发者文档


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

    你的应用程序注册的是哪种后台模式?此应用程序在主线程中与NSTimer一起工作。我知道我不应该被如此利用。但不是我制作了这个应用程序,我没有权力决定是否匹配它(我不是项目经理),没有提出强有力的理由。你是否尝试过使用本地通知而不是NSTimer?这些在后台和应用关闭时都能正常工作。谢谢回复。我想知道的第一点是,如果用户打开应用程序,然后再打开50个应用程序而不杀死任何人,我的应用程序会发生什么。操作系统将被迫关闭一些,对吗?在这一点上,我必须解释一下:如果50个应用程序没有使系统进入内存不足状态,那就好了;如果其中一个正在吞噬所有剩余内存(即,不加区别地要求所有剩余内存),那么这就是被杀死的内存。请考虑iOS有一个虚拟内存系统的事实,我的链接也介绍了这个概念。