0

我使用 CoreData,我正在考虑什么时候应该删除浪费(或过期)的数据。

根据我的想象,要点如下:

  1. 当应用程序启动时。
  2. 当应用程序终止时。(在应用程序委托中applicationWillTerminate:

我猜一个是没有风险的,但我不希望用户在清除过程中等待。(我知道看门狗异常。如果purge时间超过20秒,我会准备一个视图控制器等待。)

两个看起来不错。用户看不到等待时间。但是,我不确定这一点是否合适?有人说后台进程时间有限。

4

1 回答 1

1

无论哪种方式,您很可能会从在辅助线程上运行清理中受益。但是,您很可能无法使用第二个选项:

根据Apple 文档的相关内容applicationWillTerminate

您对此方法的实现大约有五秒钟的时间来执行任何任务并返回。如果该方法在时间到期之前没有返回,系统可能会完全终止该进程。

您可以使用的一种选择是清理,applicationDidEnterBackground:但这也有一些复杂性:

您对此方法的实现大约有五秒钟的时间来执行任何任务并返回。如果您需要额外的时间来执行任何最终任务,您可以通过调用 beginBackgroundTaskWithExpirationHandler: 从系统请求额外的执行时间。在实践中,您应该尽快从 applicationDidEnterBackground: 返回。如果该方法在时间用完之前没有返回,则您的应用程序将被终止并从内存中清除。

这可能是一个更好的解决方案,您可以通过我链接到的文档深入了解一些建议。尽管在应用程序启动期间这样做可能最容易。

于 2013-10-30T15:05:46.237 回答