Android缓存目录文件能否随时删除?是否有可靠保留保障?外部缓存呢?
Context.getCacheDir 与 getExternalCacheDir 的文件保留保障问题
关于内部缓存目录(Context.getCacheDir)
应用完全不能依赖任何缓存文件的保留保障,哪怕是应用正在运行、文件处于打开状态,系统都有可能随时删除这些文件。
官方文档明确说明:
当设备其他位置需要磁盘空间时,系统会自动删除此目录下的文件
文档中列出的“优先删除标准”只是系统清理缓存时的决策参考逻辑,并非给应用的承诺。系统不会因为应用处于运行状态、文件处于打开状态就豁免清理——当磁盘空间紧张到影响系统核心功能运行时,系统会直接执行缓存清理操作,不会顾及应用的当前状态。
关于外部缓存目录(Context.getExternalCacheDir)
答案和内部缓存目录完全一致:同样没有任何文件保留的保障。
虽然外部存储的空间通常更大,但系统在需要磁盘空间时仍会自动清理该目录下的缓存文件。除此之外,外部存储还存在额外的不可靠因素:比如用户可能手动清理外部缓存、存储介质(如SD卡)被移除等,这些情况都会导致缓存文件直接消失,甚至比内部缓存目录的文件更不稳定。
内容的提问来源于stack exchange,提问作者legoscia
相关产品推荐
相关产品推荐

