2014-03-02 3 views
14

작동하지 캐시에서 하나의 이미지를 제거 :범용 이미지 로더 - 이미지를로드하기 전에 내가 코드를 다음 호출

내 문제는,이 캐시에서 이미지를 삭제하지입니다
String url = getUrlImageIcon(); 
MemoryCacheUtil.removeFromCache(url, ImageLoader.getInstance().getMemoryCache()); 
DiscCacheUtil.removeFromCache(url, ImageLoader.getInstance().getDiscCache()); 

ImageLoader.getInstance().displayImage(url, imageView, listener); 

, 이미지 로더가 여전히 표시됩니다 나중에 오래된 이미지 ... 오래된 이미지가 더 이상 서버에 존재하지 않습니다 ...

이미지에서 캐시 된 파일을 모두 올바르게 제거하려면 어떻게해야합니까?

PS :이 라이브러리의 개발자에 따르면 최신 버전 1.9.1 ...

답변

7

를 사용하고있어 매우 간단 솔루션입니다. 캐시 된 이미지를 메모리와 디스크에서 삭제하면됩니다. 이를 수행하는 방법은 아래와 같습니다.

File imageFile = imageLoader.getDiscCache().get(imageUri); 
if (imageFile.exists()) { 
    imageFile.delete(); 
} 
MemoryCacheUtils.removeFromCache(imageUri, imageLoader.getMemoryCache()); 

위의 코드는 this에서 발췌 한 것입니다.

+1

* MemoryCacheUtils –

+0

이제 UIL에는 DiskCacheUtils가 있으므로 디스크 부분을 수동으로 수행 할 필요가 없습니다. @ rohit의 대답을 확인하십시오. – Tiago

15

@vanomart가 대답 한 내용은 답변을 업데이트하기에 완벽합니다. 현재 UIL은 다음을 지원합니다.

MemoryCacheUtils.removeFromCache(imageUri, imageLoader.getMemoryCache()); 
DiskCacheUtils.removeFromCache(imageUri, imageLoader.getDiskCache()); 

따라서 디스크 캐시를 지우는 더 좋은 방법이 있습니다.

+0

더 이상 사용되지 않습니다. –

+0

'디스크'대신 '디스크'를 사용했을 수 있습니다. '디스크'는 더 이상 사용되지 않습니다. – rohit

+0

내 직업을 구하십시오! – yuchaozh

관련 문제