5

我的应用程序创建了一些我在其整个生命周期中需要的临时文件。我最终需要处理这些文件,这样它们就不会占用设备上的空间。我想我可以在应用程序退出时删除它们,但是由于引入了多任务处理,生命周期并不像以前那么简单。我的主要问题是:当我的应用程序进入后台并稍后被杀死时,它会收到applicationWillTerminate:吗?还是只是从记忆中抹去?

当应用程序进入后台时,我无法进行清理,因为它可能在操作过程中处于后台,并且一旦回到前台就需要临时文件。我想我可以在启动时清理文件,但无论如何我对这种applicationWillTerminate:行为很感兴趣。

4

2 回答 2

5

不,applicationWillTerminate:在启用多任务的 iOS 4 设备上不调用。当您的应用程序终止时,通常意味着设备内存不足,因此即使确实被调用,也没有说您有足够的可用内存来完成任务。

Apple 建议您在应用程序进入后台时进行清理。如果您需要几秒钟,您可以请求额外的时间来执行此操作(这是少数对所有应用程序开放的多任务场景之一)。

您的其他选择是在任务完成时(无论何时)或应用程序启动时进行整理。我想可能还有其他排列方式...

于 2011-01-10T09:29:56.180 回答
1

互联网说,应用程序在后台被杀死时不会调用 applicationWillTerminate: 。另一种方法是保存一些信息(在 NSUserDefaults 中等),您打开了哪些临时文件,并在启动后检查这些文件是否留下,然后删除它们。此外,您可以了解 iOS 如何杀死您的应用程序(我假设这是通过发送信号来完成的,但我不确定)并将信号处理程序添加到您的应用程序。

于 2011-01-10T09:11:57.627 回答