我应该啥时候清除我的 iOS 应用程序的垃圾数据?在启动或终止期间?

Posted

技术标签:

【中文标题】我应该啥时候清除我的 iOS 应用程序的垃圾数据?在启动或终止期间?【英文标题】:When should I purge waste data for my iOS app? During launch or termination?我应该什么时候清除我的 iOS 应用程序的垃圾数据?在启动或终止期间? 【发布时间】:2013-10-30 14:54:26 【问题描述】:

我使用 CoreData,我正在考虑何时应该删除废弃(或过期)数据。

据我所知,要点如下:

    应用启动时。 应用程序终止时。 (在应用代理的applicationWillTerminate:

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

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

【问题讨论】:

【参考方案1】:

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

根据Apple docs 与applicationWillTerminate 的关系:

您实施此方法大约需要 5 秒时间 执行任何任务并返回。如果方法之前没有返回 时间到了,系统可能会干脆杀掉这个进程。

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

您实施此方法大约需要 5 秒时间 执行任何任务并返回。如果您需要额外的时间来执行 任何最终任务,您都可以从 系统通过调用 beginBackgroundTaskWithExpirationHandler:。在 练习,你应该从 applicationDidEnterBackground: 返回 尽快。如果方法在时间运行之前没有返回 你的应用程序被终止并从内存中清除。

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

【讨论】:

你是我的英雄。我几乎犯了一个大错误。是的。我会读它,我会听从你的建议。 @zono 很高兴它有帮助!祝你好运!

以上是关于我应该啥时候清除我的 iOS 应用程序的垃圾数据?在启动或终止期间?的主要内容,如果未能解决你的问题,请参考以下文章

Java中垃圾回收有啥目的?啥时候进行垃圾回收?

iOS 推送通知垃圾邮件

我啥时候应该使用“隐藏文本框”,啥时候应该使用(html 5)“数据属性”?

java的io流中,啥时候应该在流关闭之前加flush,啥时候不用

我应该啥时候检查互联网连接

垃圾回收算法有几种类型? 他们对应的优缺点又是什么?