Если вы хотите построить какой-то кэш-память, рассмотрите возможность использования Map с SoftReferences. SoftReferences - это своего рода ссылки, которые, как правило, хранят ваши данные некоторое время, но не мешают их сборке.
Памяти на мобильном телефоне недостаточно, поэтому хранить все в памяти может быть нецелесообразно. В этом случае вы можете сохранить свои кэши на вторичном хранилище устройства.
Извлеките MapMaker из Коллекций Google , что позволяет удобно создавать двухуровневый кэш. Подумайте об этом:
/** Function that attempts to load data from a slower medium */
Function<String, String> loadFunction = new Function<String, String>() {
@Override
public String apply(String key) {
// maybe check out from a slower cache, say hard disk
// if not available, retrieve from the internet
return result;
}
};
/** Thread-safe memory cache. If multiple threads are querying
* data for one SAME key, only one of them will do further work.
* The other threads will wait. */
Map<String, String> memCache = new MapMaker()
.concurrentLevel(4)
.softValues()
.makeComputingMap(loadFunction);
О кеше на вторичном хранилище устройства, посмотрите Context.getCacheDir () . Если вы неаккуратны, как я, просто оставьте все там и надейтесь, что система очистит вас, когда потребуется больше места: P