我正在应用程序中实现图像文件缓存,以减少直接从Web服务器下载这些文件的次数。尽管我知道Android OS可能会决定从应用程序的缓存目录中清除文件以释放内部存储空间,但我不确定此“清理”过程是否会在执行过程中发生。如果我可以假设操作系统在执行过程中不会与缓存文件发生冲突,那么我将能够使用“内存中”数据结构来优化缓存实现。例如,我可以使用缓存条目(存储在缓存文件夹中的文件)的映射(在内存中),其中包含缓存命中的时间戳和其他信息,这些信息可能有助于区分缓存条目的回收方式。除此以外,如果我必须处理这样一个事实,即缓存清理过程可能随时随地发生,甚至在应用程序执行期间,则使用内存数据结构将毫无用处,因为它们最终将与文件夹中文件夹的实际内容不同步。操作系统决定自行清理文件的事件。在这种情况下,我的缓存系统将不得不降低效率,因为每次应用程序请求新文件时,它都会被迫继续直接在文件系统中检查缓存文件夹的内容。换句话说,我只想知道我是否可以假设操作系统不会与我的应用程序同时更改缓存目录的内容,因为这可能会大大改变我的缓存实现。使用内存中的数据结构将毫无用处,因为如果操作系统决定自行清理文件,则它们最终将与文件夹的实际内容不同步。在这种情况下,我的缓存系统将不得不降低效率,因为每次应用程序请求新文件时,它都会被迫继续直接在文件系统中检查缓存文件夹的内容。换句话说,我只想知道我是否可以假设操作系统不会与我的应用程序同时更改缓存目录的内容,因为这可能会大大改变我的缓存实现。使用内存中的数据结构将毫无用处,因为如果操作系统决定自行清理文件,则它们最终将与文件夹的实际内容不同步。在这种情况下,我的缓存系统将不得不降低效率,因为每次应用程序请求新文件时,它都会被迫继续直接在文件系统中检查缓存文件夹的内容。换句话说,我只想知道我是否可以假设操作系统不会与我的应用程序同时更改缓存目录的内容,因为这可能会大大改变我的缓存实现。在这种情况下,我的缓存系统将不得不降低效率,因为每次应用程序请求新文件时,它都会被迫继续直接在文件系统中检查缓存文件夹的内容。换句话说,我只想知道我是否可以假设操作系统不会与我的应用程序同时更改缓存目录的内容,因为这可能会大大改变我的缓存实现。在这种情况下,我的缓存系统将不得不降低效率,因为每次应用程序请求新文件时,它都会被迫继续直接在文件系统中检查缓存文件夹的内容。换句话说,我只想知道我是否可以假设操作系统不会与我的应用程序同时更改缓存目录的内容,因为这可能会大大改变我的缓存实现。
只需使用正常方法从缓存目录中删除所有文件即可
public void clear() {
File[] directory = getCacheDir().listFiles();
if(directory != null){
for (File file : directory ){
file.delete();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3860 次 |
| 最近记录: |