一旦系统内存不足,Android 可能会自动删除 CacheDir 中的文件。但是文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码来进行轮询和删除。
getCacheDir()
如果是这种情况,为什么要选择getFilesDir()
呢?两者都在内存中,后者在清理内容和时间方面为开发人员提供了更多权力。
谢谢!
一旦系统内存不足,Android 可能会自动删除 CacheDir 中的文件。但是文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码来进行轮询和删除。
getCacheDir()
如果是这种情况,为什么要选择getFilesDir()
呢?两者都在内存中,后者在清理内容和时间方面为开发人员提供了更多权力。
谢谢!
一旦系统内存不足,Android 可能会自动删除 CacheDir 中的文件。
正确的。第三方应用程序还可以从应用程序的缓存目录中删除文件。而且,正如 zapl 所说,用户可以从“设置”中手动清除应用程序的缓存。
但是文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码来进行轮询和删除。
也正确。
如果是这种情况,为什么要选择 getCacheDir() 而不是 getFileDir() ?
因为操作系统、第三方应用程序和用户可以清除缓存。但是,这些东西能清缓存,并不代表它们会自动清缓存,所以你需要时常自己清理缓存。同样,虽然您的母亲可以打扫您的房间,但如果您不想被扫帚击中,您最好自己打扫房间。
后者在清理内容和何时清理方面为开发人员提供了更多权力......
不,不是的。getCacheDir()
返回一个File
对象。getFilesDir()
返回一个File
对象。它们在“开发人员在清理内容和时间方面的权力”方面是等价的。
getCacheDir()
返回缓存文件getFilesDir()
的路径,同时返回创建和存储在应用程序内部存储中的文件的路径。内部存储是持久的:它不能被系统删除。