【发布时间】: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