Неблокирующая реализация кэша файлов (BitmapLruCache)?

Я пытаюсь создать простую демонстрацию для функции ImageLoader для Android Volley Framework . Конструктор следующий:

public ImageLoader(RequestQueue queue, ImageCache imageCache) 

Проблема заключается в ImageCache . В его JavaDoc говорится:

Простой интерфейс адаптера кэша. Если он предоставлен ImageLoader, он будет использоваться в качестве кеша L1 перед отправкой на Volley. Реализации не должны блокироваться. Рекомендуется использовать LruCache.

  1. Что означает «Реализации не должны блокироваться» в этом контексте?
  2. Есть ли пример неблокирующего кеша файлов (даже не-android, но «чистый» java), который я могу использовать, чтобы обучить себя тому, как преобразовать мой существующий кеш файлов в неблокирующийся?
  3. Если такого не существует – каковы могут быть негативные последствия использования моей существующей реализации (это просто чтение из файла):

    Public byte [] get (String filename) {

     byte[] ret = null; if (filesCache.containsKey(filename)) { FileInfo fi = filesCache.get(filename); BufferedInputStream input; String path = cacheDir + "/" + fi.getStorageFilename(); try { File file = new File(path); if (file.exists()) { input = new BufferedInputStream(new FileInputStream(file)); ret = IOUtils.toByteArray(input); input.close(); } else { KhandroidLog.e("Cannot find file " + path); } } catch (FileNotFoundException e) { filesCache.remove(filename); KhandroidLog.e("Cannot find file: " + path); } catch (IOException e) { KhandroidLog.e(e.getMessage()); } } return ret; 

    }

Что означает «Реализации не должны блокироваться» в этом контексте?

В вашем случае вы не можете делать дисковые операции ввода-вывода.

Это кеш первого уровня (L1), то есть он предназначен для возврата в микросекундах, а не в миллисекундах или секундах. Вот почему они LruCache , который является кешем памяти.

Есть ли пример неблокирующего кеша файлов (даже не-android, но «чистый» java), который я могу использовать, чтобы обучить себя тому, как преобразовать мой существующий кеш файлов в неблокирующийся?

Кэш L1 не должен быть файловым кешем.

Каковы могут быть негативные последствия использования моей существующей реализации, которая есть (просто чтение из файла)

Кэш L1 не должен быть файловым кешем.

Волейбол уже имеет интегрированный кеш-файл L2 с именем DiskBasedCache , используемый для кэширования ответов HTTP. Вы можете подставить свою собственную реализацию Cache для DiskBasedCache если хотите, и предоставить это при создании RequestQueue .

Intereting Posts
Как вставить Викисловарь для автономного доступа в Android-приложении? Версия платформы платформы SDK ((23)) слишком старая, чтобы проверять API, скомпилированные с API 23 Как определить кнопку громкости в фоновом режиме или в родной среде на Android? Android BLE: получение служебного UUID в обратном вызове onLeScan () при рекламе от iOS Peripheral Развернуть все дочерние элементы в расширенном виде списка Вызов скрытого API в Android для отключения экрана Можно ли отправить сообщение через GTalk Intent? Android Studio / Intellij Idea: «Оглавление» для класса Как я могу сделать изображение прозрачным на Android? TrafficStats Api android и расчет ежедневного использования данных FindViewById не работает в статической функции внутри фрагмента Андроид UTF8 кодирование из полученной строки Android – глобальный приемник макета не работает Добавить тень в ShapeDrawable программно Android Proguard не удаляет все сообщения журнала