Android лучший способ кеширования изображений
Я пытаюсь создать для моего приложения наиболее эффективный способ кэширования изображений, загруженных из Интернета, несколько лет назад я пытался сделать это и не мог найти эффективный способ сделать эту работу, пока не наткнулся на найденный адаптер lazylist Вот:
Ленивая загрузка изображений в ListView
это работало хорошо, пока не был представлен Android 4.0, в этот момент приложение зависало после загрузки от 10 до 20 изображений, в отличие от того, где я мог просто загрузить столько, сколько я хотел, без каких-либо проблем, как я позже узнал, это был результат из-за того, что сэндвич с мороженым имеет установленное ограничение на использование памяти на приложение, которого не было в Gingerbread 2.3 и ниже, я в итоге решил просто очистить кэш каждые 10 или около того изображений, чтобы избежать сбоев, однако пользовательский опыт был не очень хорошим в результате этого, и приложение использовало тонны данных, так как оно постоянно перезагружало изображения, которые уже просматривались, с тех пор я пытался использовать кэш lru, но это, похоже, не работает вообще, особенно когда я Покиньте приложение и перезапустите его. Похоже, все изображения выпущены, мне нужен лучший способ сделать это, и я заметил, что другие приложения, такие как Instagram, похоже, нашли способ кешировать сотни мегабайт изображений, и я постоянно должен очистить вручную Кэш instagram в моих настройках, потому что кажется, что они способны хранить кэш бесконечного размера, который, кажется, никогда не извлекает его содержимое, кто-нибудь знает, как создать этот тип кэша?
2 ответа
Вы можете попробовать использовать https://github.com/nostra13/Android-Universal-Image-Loader library. Это делает большую часть тяжелой работы для вас.
Я рекомендую сохранить изображения из Интернета на SD-карте или где-то еще, а затем сохранить URI, где находится маг. В ваш список просто загрузите изображение из URI.
Если ваши изображения имеют большой размер, вам, вероятно, следует изменить размер изображения перед его сохранением, чтобы использовать меньше памяти и загружаться быстрее, поскольку обработка уже выполнена
Кстати, ограничение памяти всегда существовало в Android