有啥方法可以检测系统是不是清除了 Caches 目录?

Posted

技术标签:

【中文标题】有啥方法可以检测系统是不是清除了 Caches 目录?【英文标题】:Is there any way to detect if system clears the Caches directory?有什么方法可以检测系统是否清除了 Caches 目录? 【发布时间】:2015-05-07 11:18:38 【问题描述】:

在应用程序加载时,我将一些数据保存在应用程序沙箱内的 Caches 目录中。文件名和/或数量可能会有所不同,所以我无法检查使用这些。有时系统会清除 Caches 目录,这会导致我的应用程序出现意外行为,包括崩溃。我的问题是:

系统什么时候清空Caches目录? 如何检测系统清除了该目录?

谢谢。

编辑

来自 Apple 的文档:

Caches

使用此目录来编写您的应用可以轻松重新创建的任何特定于应用的支持文件。您的应用通常负责管理此目录的内容并根据需要添加和删除文件。

ios 2.2 及更高版本中,iTunes 不备份此目录的内容。此外,iTunes 会在设备完全恢复期间删除此目录中的文件。

在 iOS 5.0 及更高版本上,系统可能会在系统磁盘空间非常低的极少数情况下删除 Caches 目录。这在应用程序运行时永远不会发生。但是,您应该知道,iTunes 恢复不一定是可以擦除 Caches 目录的唯一条件。

参考:link

当我得到第一个答案时,让我缩小第二个答案:

是否有任何系统文件或标志可以检查以检测系统是否清除了Caches 目录?

【问题讨论】:

否,所以将您自己的文件放在 Caches 目录中并定期检查它的存在。 (但我不推荐,一定有别的办法。) 正如我所说,我不知道存储在Caches 目录中的文件数和文件名。它使用 SOAP 服务从服务器端维护,并且也具有动态使用它的实现。无论如何,谢谢你的建议。 【参考方案1】:

您不应使用Caches 目录来存储关键数据。它可以随时清除。查看文档了解更多信息:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html

【讨论】:

实际上,我存储在那里的数据也需要刷新。所以,如果我可以检测到那些已被清除,那么我也可以重新下载。我也想过NSTimer手动清除,但我想用系统周期来做。

以上是关于有啥方法可以检测系统是不是清除了 Caches 目录?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 清除缓存

有啥方法可以清除/刷新/删除OutputCache?

Javascript:有啥方法可以清除用户输入的历史记录?

如何清除 Solr 中的缓存?

有啥方法可以清除已经从安卓设备手动捕获的位置详细信息?

在 Android 8.0 以上。有啥方法可以知道系统中是不是开启了 pip 模式