20

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

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

谢谢!

4

2 回答 2

48

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

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

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

也正确。

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

因为操作系统、第三方应用程序和用户可以清除缓存。但是,这些东西清缓存,并不代表它们自动清缓存,所以你需要时常自己清理缓存。同样,虽然您的母亲可以打扫您的房间,但如果您不想被扫帚击中,您最好自己打扫房间。

后者在清理内容和何时清理方面为开发人员提供了更多权力......

不,不是的。getCacheDir()返回一个File对象。getFilesDir()返回一个File对象。它们在“开发人员在清理内容和时间方面的权力”方面是等价的。

于 2012-12-05T23:49:46.667 回答
3

getCacheDir()返回缓存文件getFilesDir()的路径,同时返回创建和存储在应用程序内部存储中的文件的路径。内部存储是持久的:它不能被系统删除。

于 2012-12-05T19:54:53.327 回答