Попробуйте использовать что-то вроде:
ConcurrentHashMap<String, SoftReference<Bitmap>> image_cache =
newConcurrentHashMap<String, SoftReference<Bitmap>>( 1 );
Для части памяти вашего кеша. SoftReference будет собирать мусор, так как устройству требуется память. Это позволит вашему приложению хранить как можно больше изображений в памяти, не вызывая проблем с памятью.
Вы можете создать резервную копию этого кэша с файловым кешем либо на SD-карте с корневым путем, используя:
Environment.getExternalStorageDirectory();
или используя пространство кэша, предоставленное Android, используя путь:
context.getCacheDir();
Пространство кеша является приватным, в результате чего изображения с SD-карты могут быть получены пользователем или изменены сторонней программой. Кэш-память находится во внутренней памяти устройства и отображается в статистике менеджера приложений. Пользователь также может легко очистить этот кеш из своих настроек-> экран диспетчера приложений.
Вам нужно будет заполнить алгоритм, который сначала проверяет кэш памяти, проверяет программную ссылку, если она найдена, проверяет файловую систему, если она не найдена, а затем, наконец, выбирает из сети, сохраняет в файл и помещает его в кеш памяти. Затем вы можете добавить дополнительные требования к кешу на основе требований вашего клиента поверх этой структуры.