Как кэшировать данные списка просмотра в Android?

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

4 ответа

Решение

Если ваши данные достаточно просты, просто сохраните их в массиве и используйте что-то вроде ArrayAdapter, чтобы связать данные с представлением списка.

Если ваши данные более сложные, то таблица SQLite, вероятно, предпочтительнее. В этом случае используйте что-то вроде SimpleCursorAdapter.

Сохраните ваши данные в таблице SQLite и используйте их в качестве кэша, чтобы в следующий раз проверить, существует ли эта таблица. Если таблица существует, запрос вместо webz:-)

Вы можете хранить данные в виде файла JSON во внутренней памяти вашего приложения. Я считаю, что это гораздо более простой подход, поскольку вы можете легко сопоставить JSON с классами Model, используя такую ​​библиотеку, как Gson. Обычно вы будете следовать этому подходу, если ваши данные не будут "обновлены", как вы могли бы это сделать в традиционной базе данных (хотя вы все еще можете обновить свои данные JSON, просто по-другому).

Я предполагаю, так как вы используете термин кеш - данные истекает каждые х минут / часов

если данные меняются каждые несколько минут, просто сохраните ваш ответ веб-сервиса в какой-то локальной переменной (если его нужно использовать только для одной операции просмотра списка)

или сохраните его в глобальной переменной (расширьте класс приложения и откройте здесь открытую переменную)

если ваши данные меняются каждые несколько часов, то лучше сохранить их в sqlite (если ваши данные требуют сложных запросов / объединений и т. д.)

или просто сохраните его в виде файла (либо в формате json, либо в формате xml) и проверьте этот файл и срок его действия, а если он все еще действителен, просто расшифруйте его, вместо повторного вызова веб-службы.

Другие вопросы по тегам