Java android以编程方式删除旧缓存数据
我正在使用android磁盘缓存来缓存从服务器加载的所有图像 我想删除所有至少2周未使用的缓存映像,并保留剩余的映像 下面是我添加缓存图像的代码Java android以编程方式删除旧缓存数据,java,android,file,caching,Java,Android,File,Caching,我正在使用android磁盘缓存来缓存从服务器加载的所有图像 我想删除所有至少2周未使用的缓存映像,并保留剩余的映像 下面是我添加缓存图像的代码 public void addBitMaptoCache(String key,Bitmap bmp) { Log.e(TAG, "Cache Creation Running"); if(null != defaultBitmaps){ for(Bitmap dbmp:defaultBitmaps){
public void addBitMaptoCache(String key,Bitmap bmp)
{
Log.e(TAG, "Cache Creation Running");
if(null != defaultBitmaps){
for(Bitmap dbmp:defaultBitmaps){
if(dbmp.sameAs(bmp)){
return;
}
}
}
if(directory!=null)
{
if(!directory.exists())
{
directory.mkdirs();
}
if(directory.exists())
{
if(directory.isDirectory())
{
File destination = new File(directory, key + ".jpg");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 90, bytes);
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
destination = new File(directory, key + ".jpg");
if(destination.exists())
{
Log.d(TAG, "Cache Created");
}
else
{
Log.e(TAG, "Cache not Created");
}
}
}
}
}
欢迎任何帮助。。。如果您需要更多详细信息,请告诉我…可以在文件最后修改日期的帮助下完成。 下面的代码可能会有所帮助
if(cacheDir.isDirectory()){
File[] files=cacheDir.listFiles();
for(File file:files){
if(null != file){
long lastModified = file.lastModified();
if (0 < lastModified) {
Date lastMDate = new Date(lastModified);
Date today = new Date(System.currentTimeMillis());
if (null != lastMDate && null != today) {
long diff = today.getTime() - lastMDate.getTime();
long diffDays = diff / (24 * 60 * 60 * 1000);
if (15 < diffDays) {
file.delete();
}
}
}
}
}
}
if(cacheDir.isDirectory()){
File[]files=cacheDir.listFiles();
用于(文件:文件){
if(null!=文件){
long lastModified=file.lastModified();
如果(0<上次修改){
Date lastMDate=新日期(lastModified);
Date today=新日期(System.currentTimeMillis());
if(null!=最后一个日期&&null!=今天){
long diff=today.getTime()-lastMDate.getTime();
长diffDays=diff/(24*60*60*1000);
如果(15天以内){
delete();
}
}
}
}
}
}
此代码将删除超过15天的缓存文件。您面临的问题是什么?实际上,在我的场景中,应用程序只需要几周的图像,在这段时间之后,应用程序可能根本不需要图像,因此需要删除这些文件。您为什么不将截击与LurCache一起使用,LurCache将为您处理缓存机制,您还可以使用Volley设置LurCache中要缓存的数据量。请参阅此链接:LruCache用于在内存中缓存数据/图像,它可能在应用程序重新启动后被删除。然而,我想在应用程序重新启动后保留它们。所以LruCache不是一个选项@普拉文辛瓦格拉