Жизненный цикл активности Android для ListView с использованием кеша?

Я реализовал listView, который показывает элементы, загруженные на мой веб-сервер. ListView использует «кеш» (держатель), я нажимаю на один элемент своего listView, и вызывается намерение (новое действие). Он работает отлично, но когда я возвращаюсь в свой listView из этого действия, вызывается onStart () и снова вызывается загрузка (тогда как мне это не нужно, потому что я использую «кеш»).

Как я могу исправить эту проблему? Мне нужно вызвать веб-сервер в функции, которую он не вызывает, когда я возвращаюсь к этому действию.

Спасибо

Флоран


person user420574    schedule 14.03.2011    source источник


Ответы (1)


Если вы пытаетесь кэшировать изображения между действиями, есть два подхода:

  1. Записывайте файлы на SD-карту. Это может быть удобно, если вы хотите, чтобы изображения оставались там даже после завершения и перезапуска вашей деятельности. Обратной стороной является то, что теперь вам нужно управлять жизненным циклом изображений и периодически удалять их, чтобы каталог кеша не увеличивался.

  2. Воспользуйтесь службой. Я не уверен, насколько эффективен этот метод, и он, как правило, немного сложнее. Сервис будет продолжать жить, пока ваши дела приходят и уходят, сохраняя ваши образы в своей памяти. Прочтите этот ответ, чтобы узнать больше о взаимодействии с Сервисы.

  3. Хранить изображения в статическом синглтоне - быстрый и грязный способ; Просто убедитесь, что вы не храните слишком много в памяти, иначе вы получите исключение нехватки памяти.

Я бы, наверное, предпочел способ 1.

Также обратитесь к этому исчерпывающему ответу.

person Matthew Willis    schedule 14.03.2011