当应用程序在iOS中进入不活动/后台/暂停状态时,调度队列中的任务会发生什么情况?

我一直在search关于应用程序状态和Grand Central Dispatch的Apple文档,但是我还没有find这个问题的一个很好的答案。

根据苹果的文档,在iOS 4.0上:

该应用程序在后台,但不执行代码。 系统会在适当的时候自动将应用程序移至此状态。 暂停时,应用程序基本上冻结在当前状态,不执行任何代码。 在内存不足的情况下,系统可能会在不通知的情况下清除暂停的应用程序,为前台应用程序腾出更多空间。

所以假设系统不清除挂起的应用程序(挂起 – >未运行转换),当前正在调度队列中执行的任务会发生什么情况? “基本上冷冻干燥”这个词语有很多不足之处 – 确切地说, 什么是冷冻干燥?

我的解释是,当应用程序转换回活动状态时,在暂停时应用程序正在使用的GCD队列中的任何一个将需要恢复; 根据这种解释,暂停GCD队列中存在的任务将消失。 我的解释是否正确?

当一个应用程序被暂停,整个过程被冻结。 一旦恢复,你可以依靠这个过程恢复,就像什么都没有发生过一样。 你的应用程序的GCD逻辑队列不会消失,它们仍然像在内存中一样。 GCD在你的进程中为你的队列服务创build的线程被恢复到原样,就像没有任何事情发生一样。

所以你的解释是不正确的:恢复前暂停GCD队列中存在的任务不会消失。 他们从未离开过; 他们只是暂停。