[代码]java代码:
private
void
pruneIfNeeded(
int
neededSpace) {
if
((mTotalSize + neededSpace) < mMaxCacheSizeInBytes) {
return
;
}
long
before = mTotalSize;
int
prunedFiles =
0
;
long
startTime = SystemClock.elapsedRealtime();
Iterator<map.entry<string, cacheheader=
""
>> iterator = mEntries.entrySet().iterator();
while
(iterator.hasNext()) {
Map.Entry<string, cacheheader=
""
> entry = iterator.next();
CacheHeader e = entry.getValue();
boolean
deleted = getFileForKey(e.key).delete();
if
(deleted) {
mTotalSize -= e.size;
}
else
{
//print log
}
iterator.remove();
prunedFiles++;
if
((mTotalSize + neededSpace) < mMaxCacheSizeInBytes * HYSTERESIS_FACTOR) {
break
;
}
}
}</string,></map.entry<string,>
如果遍历的时候,判断一下,首先删除超过缓存有效期的(过期缓存),其次按照LRU算法,删除最久未使用的,岂不是更合适