android 该高速缓存目录中的文件可以随时删除吗?

dxxyhpgq  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(183)

bounty将在3天后过期。回答此问题可获得+100声望奖励。legoscia希望引起更多人关注此问题。

Context.getCacheDir的文档中说“系统会自动删除这个目录中的文件,因为设备上的其他地方需要磁盘空间”,并列出了几个条件,哪些文件会先被删除,我的问题是,有没有应用程序可以依赖的关于文件何时会被 * 保留 * 的保证?例如,如果应用程序正在运行并打开了文件,文件不会被删除,这种情况是否存在?
我怀疑答案是没有保证,文件可以在任何时候消失,但我找不到任何确认。
附加问题:对于外部缓存目录,答案是否不同(如Context.getExternalCacheDir所返回的)?

qaxu7uf2

qaxu7uf21#

当然,该高速缓存目录中的文件会被删除。Android操作系统将始终首先删除旧文件,如File.lastModified()所报告的。Android操作系统将通过特殊的配额函数来确定缓存文件的删除顺序。如果缓存目录中所有文件的总大小超过StorageManager.getCacheQuotaBytes(java.util.UUID)返回的字节数,当系统需要额外空间时,您的应用将是第一个删除缓存文件的应用。如果未超过此配额,则您的应用将是最后一个删除缓存文件的应用(机会最小)。
有一个比缓存目录更好的选择,如果你想存储文件,你可以使用File.getDir(String name, int mode)。这个目录不会被删除,除非用户清除存储。如果用户清除存储,那么应用程序将重置自己。因此,当用户再次打开它,它将从头开始运行。
如果你想存储参数,SharedPreferences是最好的选择。你可以存储大量的键-值对。

相关问题