Хороший способ кэширования данных во время жизненного цикла приложения Android?

В связи с тем, что мой вопрос короткий, я создал приложение с тремя действиями, где A – список категорий, B – список элементов, C – отдельный элемент. Данные, отображаемые в B и C, анализируются из онлайн-XML. Но если я пройду через A -> B1 -> C, а затем вернусь к A, а затем вернусь к B1, я бы хотел, чтобы его данные кэшировались где-то, поэтому мне больше не нужно будет запрашивать XML.

Я новичок в программировании на Android и Java, я много искал и не могу найти (или просто не имею идеи, где искать) способ сделать то, что я хочу.

Будет ли хранить все полученные данные в основном действии A (HashMaps? ContentProviders?), А затем перейти к B и C (если они получат тот же запрос, который был раньше), хорошая идея?

Solutions Collecting From Web of "Хороший способ кэширования данных во время жизненного цикла приложения Android?"

Простой и быстрый способ кэширования информации или отслеживания состояния приложения – это расширение приложения, как описано в этом сообщении в блоге .

Это сообщение в блоге забывает добавить, что вы должны установить свой класс CustomApplication в манифесте, например:

<application [...] android:name="CustomApplication"> 

В моих проектах я придерживаюсь стиля singleton через getInstance.

Дополнительные ресурсы: этот ответ , глобальные переменные в приложениях для Android и этот пост в блоге .

Если вы хотите создать какой-то кеш в памяти, подумайте об использовании карты с 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

Вы можете использовать хранилище данных, как описано в Android Reference здесь http://developer.android.com/guide/topics/data/data-storage.html