背景和暂停的app状态之间的混淆

时间:2013-02-26 10:24:38

标签: background ios5 uiapplication application-state

我对这两个州有点困惑。以下是我的理解;

  

当app处于后台时,如果你在App plist文件中将"Application does not run in background"设置为NO,那么App会继续运行   在背景中。在挂起模式下,App会保留在内存中但不会   执行代码!系统在移动到Suspended时不会通知App   在内存不足的情况下从内存中清除和清除应用程序,为前台应用程序创建空间。

我的理解是否正确?如果是这样,那么当App在后台运行并执行代码时,为什么不在控制台上打印我的NSLog?我的TCP套接字连接实际发生了什么,我不断从服务器获取数据?为什么我们需要Suspended状态无论如何系统最终会在低内存情况下从内存中清除App。应用程序从暂停状态变为活动状态或开始新鲜状态之间有什么区别吗?

3 个答案:

答案 0 :(得分:3)

您应该查看 IOS应用程序编程指南部分“应用程序状态和多任务处理”。 通过搜索Xcode文档,并将短语“App States and Multitasking”和“Hits Must”项设置为“匹配搜索术语”来查找。另一个有用的搜索短语:“后台执行”。

摘要答案是,应用程序可以无限期地在后台继续“执行”,原因只有几个:

  在iOS中,只允许特定的应用类型在后台运行:

     
      
  • 在后台播放用户可听内容的应用,   例如音乐播放器应用
  •   
  • 让用户了解其内容的应用   始终位置,例如导航应用
  •   
  • 支持互联网协议语音(VoIP)的应用
  •   
  • 需要下载和处理新内容的报亭应用
  •   
  • 从外部附件接收定期更新的应用
  •   

除了这些特定操作之外,应用程序可以要求继续执行很短的时间,文档在“在后台执行有限长度任务”一节中介绍。在短时间内,您的应用程序告诉系统它已完成(然后暂停)或强行终止。文档中的详细信息。

具有良好状态图的该文档的另一个有用的部分是“管理应用程序状态更改”部分。该部分讨论进入后台并返回前台。它应该回答你关于开始新鲜与从暂停状态开始之间的区别的问题。简短(不太正确)的答案是,如果您从暂停状态开始并且在进入后台时没有采取任何特殊操作或(重新)进入前景,那么您只需从您所在的位置继续或多或少地继续。此外,从暂停状态开始更快。阅读文档,因为它说它比我的释义要好得多。

答案 1 :(得分:3)

应用程序状态

未运行:您的应用在启动之前处于此状态。

有效:应用启动后,接收活动。

无效:当您的应用程序正在运行但有些事情发生中断时,就像电话一样,它会变为非活动状态。非活动意味着应用程序仍在前台运行,但它没有接收事件。

Backgrounded:在此状态下,您的应用不再处于前台,但它仍然可以运行代码。

暂停:当您的应用无法再运行代码时,您的应用就会进入此状态。

答案 2 :(得分:1)

背景

  • 执行代码-代码在应用程序处于后台状态时执行。
  • 应用必须进入后台状态,然后才能进入暂停状态。
  • 即。假设您在Facebook上并且上传了视频,并且在按下POST按钮后立即快速切换到另一个应用程序。尽管您切换了另一个应用程序而没有终止该应用程序,但是可以将该应用程序配置为执行后台进程以完成上传。
  • 处于后台的应用程序并不一定意味着它已被挂起,而是被暂停的应用程序在后台。
  • 一个应用程序可以请求在后台模式下停留额外的时间(例如,为了在后台播放音频或完成网络请求);之后它将进入挂起状态或被系统强行终止。

已暂停:

  • 不执行代码-应用处于挂起状态时不执行代码。
  • 处于暂停状态的应用也处于后台状态。
  • 系统将应用程序移至此状态,而无需事先通知您。
  • 处于暂停状态的应用仍在内存中。

一些其他可以帮助您解决此主题的信息: