为什么在Android上使用getCacheDir()

Jag*_*uar 15 android

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

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

谢谢!

Com*_*are 29

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

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

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

也正确.

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

因为操作系统,第三方应用程序和用户可以清除缓存.然而,仅仅因为那些东西可以清除缓存并不意味着他们自动会清除缓存,所以你需要不时自我清理缓存.同样地,当你的母亲可以打扫你的房间时,如果你自己打扫房间,如果你不想用扫帚打,通常是个好主意.

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

不,不是的.getCacheDir()返回一个File对象.getFilesDir()返回一个File对象.它们在"在清理什么以及何时清理"方面具有"开发商的权力".

  • 再加上一个**“妈妈_可以_打扫你的房间”**类比。 (3认同)
  • @ raul8它们都返回一个`File`对象,因此OP似乎错误地认为`getFilesDir()`"为开发人员提供了更多的权力".它们都提供相同的功率. (2认同)
  • @anshsachdeva:缓存的重点是被清除。如果您不希望缓存被清除,那么它就不是缓存。理想情况下,您可以通过任何可能的触发器清除缓存,包括“设置”中的用户操作。如果由于某种原因这是不合适的,那么不要使用 Android 的缓存选项(`getCacheDir()`、`getExternalCacheDir()`),因为从操作系统的角度来看,您想要的不是缓存。 (2认同)