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



我一直在浏览苹果公司关于应用程序状态和中央调度的文档,但我还没有找到一个很好的答案。

根据Apple的文档,在iOS 4.0上:

应用程序在后台,但没有执行代码。的系统自动将应用程序移动到此状态适当的时间。当挂起时,应用程序基本上是以其当前状态冷冻干燥,不执行任何代码。在低内存条件下,系统可能清除挂起应用程序没有通知要为前景腾出更多空间应用程序。

假设系统没有清除挂起的应用程序(挂起->未运行转换),那么当前在调度队列中执行的任务会发生什么?短语"基本上是冻干的"留下了很多需要改进的地方——确切地说什么是冻干的?

我的解释是应用程序在暂停时使用的GCD队列将需要在应用程序转换回活动状态时恢复;在这种解释下,挂起前GCD队列中存在的任务将消失。我的解释对吗?

当一个应用被挂起时,整个进程被冻结。您可以指望进程恢复,就好像它恢复后什么都没发生一样。你的应用程序的GCD逻辑队列不会消失,它们仍然在内存中。GCD在您的进程中为服务您的队列而创建的线程将恢复到位,就好像什么也没发生一样。

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

最新更新