为什么在Android上使用getCacheDir()

时间:2012-12-05 19:48:42

标签: android

一旦系统内存不足,Android可能会自动删除CacheDir中的文件。但文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码进行轮询和删除。

如果是这种情况,为什么要选择getCacheDir()而不是getFilesDir()?两者都在内存中,而后者在清理什么以及何时清理方面为开发人员提供了更多的权力。

谢谢!

2 个答案:

答案 0 :(得分:28)

  

一旦系统内存不足,Android可能会自动删除CacheDir中的文件。

正确。第三方应用程序还可以从应用程序的缓存目录中删除文件。并且,正如zapl所说,用户可以从“设置”中手动清除应用程序的缓存。

  

但是文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码进行轮询和删除。

也正确。

  

如果是这种情况,为什么要在getFileDir()上选择getCacheDir()?

因为操作系统,第三方应用程序和用户可以清除缓存。但是,仅仅因为可以清除缓存并不意味着它们会自动 清除缓存,因此您需要自己整理缓存。同样地,当你的母亲可以清洁你的房间时,如果你自己打扫房间,如果你不想被扫帚打中,通常是个好主意。

  

后者在清理什么以及什么时候为开发人员提供了更多的权力......

不,它没有。 getCacheDir()返回File个对象。 getFilesDir()返回File个对象。它们在“清理什么以及何时清理”方面与“开发人员的权力”相当。

答案 1 :(得分:2)

getCacheDir()返回缓存文件的路径,而getFilesDir()返回创建并存储在应用内部存储中的文件的路径。内部存储是持久存储的:系统无法删除它。