Intereting Posts
Каков наилучший способ объявить компонент UI в Android с Kotlin? Обмен данными между видами деятельности и услугами Android: анимировать прямоугольник ImageView: метод onDraw рисует «позади» фон изображения, а не вверху Как добавить маржу между EditText и Soft Keyboard? Ошибка: пакет org.apache.commons.codec.binary не существует Изменить шрифт PreferenceFragment через шрифты активов Совместное использование объекта между действиями LiveWallpaper с SurfaceHolder.lockCanvas (Rect грязный) Попытка запустить проект Android в IntelliJ: Ошибка: Аномальное завершение процесса сборки: Ошибка: этот экземпляр Java не поддерживает 32-разрядную JVM. Gson deserializer с конвертером для дооснащения: нужен только внутренний JSON для всех ответов Затухание границы изображения в изображении USB Dongle Recognition в Android – Beaglebone ActionbarSherlock: Длинный клик по элементу действия показывает тост? Android Parse – ParseQuery с условием равенства List для поля / столбца

Может ли Volley (Google IO 2013) иметь level1 LruBitmapImageCache и level2 DiskCache?

Может ли Android Volley (Google IO 2013) иметь кэш Bitmap для первого уровня кеша, а также кэш диска для уровня2. Я не понимаю, есть ли это выбор или какой-либо вариант. Также задается вопросом о производительности кеша диска и кеша Bitmap для изображений. Я заметил, что ImageLoader, похоже, использует либо кеш диска, либо бит кэш-памяти, но я также где-то читал об этом, имея кеширование уровня 1 и level2 …

Volley, по умолчанию, кэширует все на основе заголовков http на основе диска (L2). Если нет кеша или заголовков TTL, кэширование диска не будет происходить.

Вы задали вопрос о кешировании, в котором есть ответ, который поможет вам понять здесь .

О кэше битмапов. На самом деле, класс ImageLoader ожидает реализацию интерфейса ImageCache который должен быть кешем памяти (L1). См. Этот вопрос .

Из коробки Volley имеет только дисковый кэш (класс DiskBasedCache), но вы можете предоставить свой (реализовать интерфейс com.android.volley.Cache). В Volley нет такого термина, как «Bitmap cache». По умолчанию все данные (растровые изображения, тексты и т. Д.) Кэшируются на диске.

Я знаю, что это старый вопрос, но у меня была такая же проблема, и я потратил пару дней на чтение блогов, просмотр видео и прокрутку вверх и вниз по исходному коду Volley, чтобы, наконец, понять это. Так что для будущей ссылки здесь самое лучшее, что можно объяснить:

  • Volley кэширует КАЖДЫЙ ответ, если только ответ явно не говорит «no-cache» или «no-store» в своем заголовке. Если это так, он не будет кэшироваться, иначе он будет кэшироваться в соответствии с «максимальным возрастом» заголовка ответа.
  • Система кэширования выше имеет смысл 100%, так как ответ не будет действительным, если сервер говорит так, чтобы вы могли установить дату истечения для каждого ответа со стороны сервера (это потрясающе).
  • Если вам не нравится описанный выше метод кеширования, вы можете переопределить соответствующую часть кода в исходном коде, но он НЕ рекомендован
  • Все упомянутое выше кэшируется на диске с использованием алгоритма LRU, который делает его L2. Поэтому волейбол встроил кэширование L2 для КАЖДОГО запроса (включая изображения)
  • Кэш-память кэша блокирует ввод-вывод. Так что скажем, пользователь быстро удаляет ваш ListView, и изображения должны загружаться очень быстро, но I / O блокирует ваш основной поток, и вы видите некоторые раздражающие прыжки при прокрутке. Тогда неблокирующий (в памяти) L1-кеш пригодится, и, как вы можете видеть, это просто полезно при работе с изображениями. Итак, в Volley нет встроенного кэша L1, но если вы хотите использовать ImageLoader, вы можете закодировать свой собственный и связать его с ImageLoader. (Не беспокойтесь, тысячи уже доступны под именем LruBitmapCache, просто скопируйте их)
  • Вывод. Установите сервер для отправки правильных данных кэширования для ваших ответов (что очень просто) и определите LruBitmapCache для вашего ImageLoader в Volley, и все будет сделано. У вас будут кеши L1 и L2. Если L1 не выполняет проверки волейбола L2 (диск), и если он снова сработает, он будет использоваться для RPC.

Надеюсь, поможет