iOS 多任务处理:系统在进入后台时执行的减少

Posted

技术标签:

【中文标题】iOS 多任务处理:系统在进入后台时执行的减少【英文标题】:iOS Multitasking: Reductions performed by system upon entering background 【发布时间】:2010-12-14 20:21:19 【问题描述】:

我看过 WWDC 2010 关于采用多任务处理的讨论,我已经开始启用我们的应用程序,但是我有一个关于发布不可见视图的问题。

根据谈话(Session 105 - Adopting Multitasking on iPhone OS, Part 1 - 00:34:50),据说系统在进入后台时会释放“不可见的 UIViewController 视图”。但是,在我的测试期间(在模拟器中),我没有看到这种情况发生。

-viewDidUnload 方法没有被调用,进入前台查看之前隐藏的 VC 后,-loadView 方法也没有被调用。因此,与他们在演讲中所说的相反,我的 UITabBarController 中隐藏的 VC 视图根本没有被释放。有什么想法吗?

“Moving to the Background”文档中没有提到这一点,只是在谈话中。

任何澄清将不胜感激。

【问题讨论】:

【参考方案1】:

您是否尝试过在应用处于后台时模拟内存警告?我相信只有在其他应用程序开始请求内存时才会释放视图。如果内存消耗保持不变,则不会释放您的视图,以便您可以更快地切换回来。

【讨论】:

有趣!在后台触发内存警告确实会导致应用程序重新进入前台后调用-viewDidUnload。所以我唯一的问题是,系统是否会在开始查看终止应用程序之前触发这些警告(在内存不足的情况下)?这些不需要的视图正在占用内存并计入 ios 将查看的“脏大小”度量。 是的,警告发生在应用程序终止之前。我相信至少有两个不同的级别会通知您。我认为总共三个级别。虽然我现在找不到解释它的文档。

以上是关于iOS 多任务处理:系统在进入后台时执行的减少的主要内容,如果未能解决你的问题,请参考以下文章

iOS解决应用进入后台后计时器和位置更新停止的问题

音频录制应用程序的 iOS 多任务处理

谈一谈iOS开发后台下载

谈一谈iOS开发后台下载

多线程:到底什么时候该用多线程

多线程:到底什么时候该用多线程