2014-02-06 1 views
1

캐시를 외부에 저장하면 (SD 카드) 제거 중에 삭제되지 않습니다. 그런 일이 일어나기를 원하지 않습니다. UIL 라이브러리를 편집하여 내부적으로 캐시 만 저장하도록 할 수는 있습니다 (앱 내부). 어쨌든 LimitedAgeDiscCache을 사용하고 있으므로 주어진 시간에 삭제됩니다.유니버설 이미지 로더가 내부적으로 만 캐시 할 수 있습니까?

예인 경우 getOwnCacheDirectory 방법을 StorageUtils.class에서 변경해야합니까?

답변

0

ImageLoaderConfiguration.Builder (컨텍스트)의 메서드 diskCache()를 사용하여 범용 이미지 로더에 대한 DiskCache를 설정할 수 있습니다. 그리고이 맞춤 디스크 캐시는 내부 캐시를 선호 할 수 있습니다.

그리고 우리는 Universal-Image-Loader의 StorageUtils에서 공개 방법으로 내부 저장소를 만들 수 있습니다. 이 당신을 위해 유용 할 수 있습니다 예를 들어

,

// false to indicator we don't prefer external storage. 
File cacheDir = StorageUtils.getCacheDirectory(context, false); 
// to avoid exception, we still prepare a default one as universal image loader 
File reserveCacheDir = StorageUtils.getCacheDirectory(context); 

long cacheMaxSize = 15 * 1024 * 1024; // 15 MB 

DiskCache diskCache; 
try { 
    diskCache = new LruDiscCache(cacheDir, reserveCacheDir, DefaultConfigurationFactory.createFileNameGenerator(), cacheMaxSize, 0); 
} catch (IOException e) { 
    e.printStackTrace(); 
    // if we cannot use LruDiscCache with internal cache, jut use DefaultConfigurationFactory instead 
    diskCache = DefaultConfigurationFactory.createDiskCache(context, DefaultConfigurationFactory.createFileNameGenerator(), cacheMaxSize, 0); 
} 

ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(context) 
     .diskCache(diskCache); 
ImageLoaderConfiguration config = builder.build(); 
ImageLoader.getInstance().init(config); 

희망.