EhCache в Android для кэширования растровых изображений?

Я пишу довольно приложение для Android, которому нужно кэшировать множество разных изображений размером от 48x48 до 500x500 пикселей. Эти изображения загружаются по сети из различных источников (подумайте: пользователь выбирает источник, просматривает набор изображений, меняет источник, просматривает набор изображений и т. д.). Я хотел бы реализовать кеширование для этих изображений, так как я не хочу использовать HTTP, если кто-то просматривает некоторые изображения, которые они уже видели. Очевидно, что использование памяти играет ключевую роль, поэтому здесь на помощь приходит EhCache, поскольку он предлагает множество различных вариантов ограничения кеша, расширения его на диск и т. д.

Это правильный/лучший способ кэширования этих изображений? Я заметил, что многие приложения кешируются прямо на диск на SD-карте, но я хотел бы избежать этого, если это возможно, ради скорости/удобства.


person Naftuli Kay    schedule 14.02.2011    source источник
comment
Вы пытались кешировать изображения на диске, прежде чем пытаться использовать кеш в памяти? Помните, что у вас очень ограниченный ресурс на вашем телефоне, и система убьет ваше приложение, когда ему понадобится этот ресурс, но диск там всегда доступен.   -  person dongshengcn    schedule 14.02.2011
comment
Итак, я должен написать целую систему кэширования, которая будет кэшировать на диск? Есть ли библиотека, которая упростит это?   -  person Naftuli Kay    schedule 14.02.2011


Ответы (1)


Вам следует ознакомиться с проектом Droid-Fu Матиаса Капплера:
https://github.com/mttkay/droid-fu

В Droid-Fu есть ImageCache, который использует память для кеша первого уровня и диск для второго уровня. Он специально сделан для Android и делает правильную вещь, а именно использует назначенный каталог кеша для текущего приложения вместо того, чтобы загрязнять SD-карту или другие каталоги. Android может автоматически очищать каталог кеша, когда это необходимо.

Вот Javadoc:
http://mttkay.github.com/droid-fu/com/github/droidfu/imageloader/ImageCache.html

person Hugo Josefson    schedule 26.04.2011
comment
Спасибо, это действительно полезно. - person Naftuli Kay; 29.04.2011
comment
Android НЕ будет управлять этим каталогом, только если места для хранения мало (что не так, как вы хотели бы, чтобы кеш работал): когда на устройстве мало места во внутренней памяти, Android может удалить эти файлы кеша, чтобы освободить место. Однако вы не должны полагаться на то, что система очистит эти файлы за вас. Вы всегда должны поддерживать файлы кеша самостоятельно и оставаться в пределах разумного предела потребляемого пространства, например 1 МБ. Когда пользователь удаляет ваше приложение, эти файлы удаляются. - person MrSnowflake; 26.09.2012
comment
@MrSnowflake Тот факт, что Droid-Fu использует каталог кеша, не означает, что он также не может очищать за собой. Разве это не так? Я думаю, что точка зрения Хьюго заключалась в том, что он использует подходящее место для хранения, которое, по крайней мере, подходит для очистки, если Android сочтет это необходимым. - person spaaarky21; 12.06.2014
comment
@ spaaarky21 Я только говорю, что ОС не сделает это за вас. Если Droid-Fu сделает это, отлично! в противном случае вы должны сделать это сами! - person MrSnowflake; 20.06.2014