一旦系统内存不足,Android可能会自动删除CacheDir中的文件。但文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码进行轮询和删除。
如果是这种情况,为什么要选择getCacheDir()
而不是getFilesDir()
?两者都在内存中,而后者在清理什么以及何时清理方面为开发人员提供了更多的权力。
谢谢!
答案 0 :(得分:28)
一旦系统内存不足,Android可能会自动删除CacheDir中的文件。
正确。第三方应用程序还可以从应用程序的缓存目录中删除文件。并且,正如zapl所说,用户可以从“设置”中手动清除应用程序的缓存。
但是文档说我们不应该依赖系统清除这个缓存,因此编写额外的代码进行轮询和删除。
也正确。
如果是这种情况,为什么要在getFileDir()上选择getCacheDir()?
因为操作系统,第三方应用程序和用户可以清除缓存。但是,仅仅因为可以清除缓存并不意味着它们会自动 清除缓存,因此您需要自己整理缓存。同样地,当你的母亲可以清洁你的房间时,如果你自己打扫房间,如果你不想被扫帚打中,通常是个好主意。
后者在清理什么以及什么时候为开发人员提供了更多的权力......
不,它没有。 getCacheDir()
返回File
个对象。 getFilesDir()
返回File
个对象。它们在“清理什么以及何时清理”方面与“开发人员的权力”相当。
答案 1 :(得分:2)
getCacheDir()
返回缓存文件的路径,而getFilesDir()
返回创建并存储在应用内部存储中的文件的路径。内部存储是持久存储的:系统无法删除它。