Универсальный загрузчик изображений Android: проверка байпаса/памяти кэша при загрузке изображения?

В библиотеке включена только опция включения/отключения кэширования в параметрах отображения. Есть ли способ избежать проверки кеша или памяти при загрузке изображений?

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

Ответ 1

UIL всегда проверяет кеши перед отображением. Таким образом, избежать изменений без источников невозможно.

Но я думаю, что вы можете решить свою проблему, расширив кеш диска. Цель состоит в том, чтобы вернуть несуществующий файл из метода get(), когда вы хотите загрузить полноразмерное изображение. Поэтому вы должны делать как обычно для загрузки эскизов. Когда вам нужно отобразить полноразмерное изображение, вы должны отключить кеширование на диске в параметрах отображения (DisplayImageOptions), а затем сделать что-то вроде этого:

((MyDiscCache) imageLoader.getDiscCache()).setIgnoreDiskCache(true);

Итак, ваш кеш должен вернуть любой несуществующий файл (но не null).

Когда вы вернетесь к отображению эскизов, вы должны "включить" (setIgnoreDiskCache(false)) диск обратно.

UPD: Создайте свой собственный кэш диска и настройте его на конфигурацию.

public class MyDiscCache extends UnlimitedDiscCache {

    private boolean ignoreDiskCache;

    public MyDiscCache(File cacheDir) {
        super(cacheDir);
    }

    public MyDiscCache(File cacheDir, FileNameGenerator fileNameGenerator) {
        super(cacheDir, fileNameGenerator);
    }

    @Override
    public File get(String key) {
        if (ignoreDiskCache) {
            return new File("fakePath");
        } else {
            return super.get(key);
        }
    }

    public void setIgnoreDiskCache(boolean ignoreDiskCache) {
        this.ignoreDiskCache = ignoreDiskCache;
    }
}