Background 后台和挂起应用程序状态之间的混淆
我对这两种状态有点困惑。以下是我的理解 当应用程序处于后台时,如果您有Background 后台和挂起应用程序状态之间的混淆,background,ios5,uiapplication,application-state,Background,Ios5,Uiapplication,Application State,我对这两种状态有点困惑。以下是我的理解 当应用程序处于后台时,如果您有,则应用程序不会运行 在后台“设置为无应用程序内plist文件,然后应用程序继续运行 在后台。在挂起模式下,应用程序将保留在内存中,但不会 执行代码!当应用程序移动到暂停状态时,系统不会通知应用程序 在内存不足的情况下,状态并清除内存中的应用程序,为前台应用程序创建空间 我的理解正确吗?如果是这样的话,为什么当应用程序在后台运行并执行代码时,我不在控制台上打印我的NSLog呢?在我不断从服务器获取数据的地方,我的TCP套接字连
,则应用程序不会运行
在后台“
设置为无应用程序内plist文件,然后应用程序继续运行
在后台。在挂起模式下,应用程序将保留在内存中,但不会
执行代码!当应用程序移动到暂停状态时,系统不会通知应用程序
在内存不足的情况下,状态并清除内存中的应用程序,为前台应用程序创建空间
我的理解正确吗?如果是这样的话,为什么当应用程序在后台运行并执行代码时,我不在控制台上打印我的NSLog呢?在我不断从服务器获取数据的地方,我的TCP套接字连接到底发生了什么?为什么我们需要挂起状态,因为无论如何,在内存不足的情况下,系统最终会从内存中清除应用程序。应用程序从挂起状态变为活动状态或重新启动之间有什么区别吗?您应该查看IOS应用程序编程指南中的“应用程序状态和多任务处理”部分。
通过搜索Xcode文档,将短语“应用程序状态和多任务处理”和“点击次数必须”项设置为“匹配搜索项”,可以发现这一点。另一个有用的搜索短语:“后台执行”
简单的回答是,应用程序可以无限期地在后台“执行”,原因有限:
在iOS中,仅允许特定应用类型在后台运行:
- 在后台向用户播放音频内容的应用程序, 例如音乐播放器应用程序
- 让用户随时了解自己的应用程序 位置,如导航应用程序
- 支持互联网语音协议(VoIP)的应用程序
- 需要下载和处理新内容的报摊应用程序
- 从外部附件接收定期更新的应用程序
挂起:当您的应用程序无法再运行代码时,将进入此状态。背景:
- 执行代码-在应用程序处于后台状态时执行代码
- 应用程序必须先进入后台状态,然后才能进入挂起状态
- 假设你在Facebook上上传了一段视频,按下POST按钮后立即切换到另一个应用程序。虽然您已切换到另一个应用程序,但不终止该应用程序,但可以将该应用程序配置为执行后台进程以完成上载
- 处于后台的应用程序不一定意味着它已暂停,但处于暂停状态的应用程序处于后台
- 应用程序可以请求在后台模式下额外停留一段时间(例如,为了在后台播放音频或完成网络请求);之后,它要么进入暂停状态,要么被系统强制终止
- 不执行代码-应用程序处于挂起状态时不执行代码
- 处于挂起状态的应用程序也处于后台状态
- 系统将应用程序移动到此状态,而不提前通知您
- 处于挂起状态的应用程序仍在内存中。
- UIApplication通过AppDelegate中的方法通知应用程序状态转换。
大多数状态转换都伴随着这些方法。
这些方法是UIApplicationLegate协议的一部分。
它们为您提供了对状态变化作出响应的机会。
例如,下面的方法告诉代理应用程序即将终止的时间
-仅当应用程序在终止前处于后台时才会调用;没有暂停 func应用程序将终止(application:UIApplication){…}
- 除了Charlie Price 2013年的回答外,iOS现在还允许以下背景:
- 表示有新内容可供下载的远程通知。当收到远程通知时,系统会在后台启动或恢复应用程序,并为其提供少量时间下载新内容
- 核心蓝牙可在后台与蓝牙附件通信李>
- UIApplication.shared.backgroundTimeRemaining告诉您