2013-12-07 2 views
1

Как настроить Android Universal Image Loader для загрузки динамических URI изображений?Как кэшировать изображения с использованием динамических URI изображений?

Например:

Оба URI, должны представлять один и тот же удаленный файл image.jpg:

Ссылка:

Когда-нибудь, вы не можете использовать URL изображения в качестве ключа кэша, потому что часть URL является динамическим (т.е. для назначения контроля доступа)

SDWebImage - Using cache key filter

Я использую SDWebImage внутри моего приложения iOS, и мне действительно нужна аналогичная функция, позволяющая использовать UIL внутри своей версии Android.

ответ

0

Я думаю, что вы можете использовать эту память кэш-декоратор:

public class CustomMemoryCache implements MemoryCacheAware<String, Bitmap> { 

    private final MemoryCacheAware<String, Bitmap> cache; 

    public CustomMemoryCache(MemoryCacheAware<String, Bitmap> cache) { 
     this.cache = cache; 
    } 

    @Override 
    public boolean put(String key, Bitmap value) { 
     return cache.put(cleanKey(key), value); 
    } 

    @Override 
    public Bitmap get(String key) { 
     return cache.get(cleanKey(key)); 
    } 

    @Override 
    public void remove(String key) { 
     cache.remove(cleanKey(key)); 
    } 

    @Override 
    public Collection<String> keys() { 
     return cache.keys(); 
    } 

    @Override 
    public void clear() { 
     cache.clear(); 
    } 

    private String cleanKey(String key) { 
     return key.substring(0, key.lastIndexOf("?")) + 
       key.substring(key.lastIndexOf("_")); 
      // original cache key is like "[imageUri]_[width]x[height]" 
    } 
} 

Затем завернуть любую готовую реализацию кэш-памяти и установить его в конфигурацию. Например:

LruMemoryCache memoryCache = new LruMemoryCache(memoryCacheSize); 
CustomMemoryCache memoryCacheDecorator = new CustomMemoryCache(memoryCache); 

ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) 
    ... 
    .memoryCache(memoryCacheDecorator) 
    ... 
    .build(); 
Смежные вопросы