Как кешировать данные списка в Android? - PullRequest
7 голосов
/ 08 апреля 2011

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

Ответы [ 4 ]

3 голосов
/ 08 апреля 2011

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

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

1 голос
/ 08 апреля 2011

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

1 голос
/ 08 апреля 2011

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

0 голосов
/ 08 апреля 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...