【问题标题】:Android App: The Cache directory is empty but the device cache indicator shows that it is not emptyAndroid App:缓存目录为空但设备缓存指示器显示不为空
【发布时间】:2020-05-05 08:47:29
【问题描述】:

我的应用使用 File.createTempFile(...) 在 getCacheDir() 返回的目录中创建临时文件。 然后使用此处给出的解决方案清除缓存: How-to-delete-cache-folder-of-app

使用“设备文件资源管理器”工具,我可以看到文件已被删除,如图所示(这不是同步失败,因为我不删除它们时可以看到它们): Device File Explorer

但是,设备缓存指示器显示相反: indicator1 接下来是新安装App时的缓存指示器: indicator2

我已经尝试了所有方法。我还检查了getExternalCacheDir()中没有文件。 我曾经设法影响设备缓存指示器,但我没有检测到这种模式。 非常感谢您。

【问题讨论】:

  • 图片中显示的缓存大小很可能包括操作系统缓存的内容,例如应用运行时解压的 APK 元素。由于您不是提出该缓存大小的人,因此您无法知道设备制造商可能在该值中包含什么。
  • 感谢您的快速回复。当我创建临时文件时,我可以看到缓存是如何增加的。但是,当我删除文件(file.deleted())时,它不会显示在缓存指示器中并保持相同的兆字节数。
  • 这取决于设备制造商和/或 Google(作为 Android 开发人员)。该值可能因设备和/或操作系统版本而异。计算值的方式和时间可能因设备和/或操作系统版本而异。如果您要删除这些文件,则说明您已经完成了自己的工作,其余部分由其他开发人员编写的其他代码处理,我们无法控制。
  • 谢谢。这让我放心。我注意到,当我创建一个新的临时文件时,设备缓存存储指示器的视图会在每次更改时更新,所以我担心删除时它不会更新。如果缓存用完并且我已经检查了它导致的故障(使用了约 2.5 Gb 的缓存),我担心我的应用程序将无法工作。也许我的设备只允许我每分钟/每小时/每天多次清除缓存,或者可能需要时间来反映更改并且我不会让它采取行动。感谢您的回答,这让我放心。
  • 我会使用低级操作系统的东西,而不是那个应用程序,来测量你消耗的缓存。设备文件资源管理器是查看哪些文件存在和不存在的好选择。您还可以使用adb shell df 查看正在使用多少磁盘空间,至少在某些设备上是这样(df 命令可能不会在所有设备上使用)。

标签: java android file android-studio caching


【解决方案1】:

我刚刚检查了删除肯定不是即时的。但它终于完成了。非常感谢您的关注。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 2020-10-09
    • 1970-01-01
    • 2020-03-25
    • 2015-08-04
    相关资源
    最近更新 更多