Как эффективно загружать изображения с сервера в tableView? - PullRequest
2 голосов
/ 26 января 2010

У меня есть табличное представление со всеми ячейками, имеющими UITableViewCellStyleSubtitle, изображения всех ячеек получены с сервера.

Однако эти изображения не часто меняются.

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

Или, по крайней мере, покажите мне несколько вариантов, доступных для достижения цели.

Спасибо

Ответы [ 2 ]

4 голосов
/ 27 января 2010

Библиотека Three20 имеет подкласс ImageView, который принимает URL-адрес вашего удаленного изображения и использует превосходный механизм TTURLRequest / Caching для получения изображений. Он поддерживает кэш в памяти и на диске и будет загружать изображения только в том случае, если они не кэшированы или срок их действия истек. Вы можете настроить время истечения срока действия кэша по умолчанию или использовать значение из своего ответа HTTP. Если вы используете подкласс TTTableViewController и соответствующий подкласс TTTableItem, вы получите соответствующее поведение при загрузке изображений бесплатно. Однако нет необходимости использовать каждые три компонента, чтобы делать то, что вам нужно. Если вы интегрируете в существующий код, вы можете создать свой собственный подкласс UITableViewCell, который использует TTImageView вместо стандартного UIImageView. Затем в ваших методах настройки ячеек вы можете установить изображение-заполнитель по умолчанию и URL-адрес для загрузки, и он позаботится обо всем остальном. В качестве оптимизации производительности следует также реализовать методы делегата UIScrollView в контроллере табличного представления для приостановки TTURLRequestQueue во время прокрутки (посмотрите на TTTableViewController, чтобы увидеть, как это делается).

1 голос
/ 26 января 2010

Вы можете попробовать один из следующих

  • Создать словарь и кэшировать все извлеченные изображения в нем, используя имя изображения в качестве ключа

  • Кэширование и повторное использование всех ячеек UITableView в tableView:cellForRowAtIndexPath:

  • Если повторяется только одно изображение, загрузите его снаружи tableView:cellForRowAtIndexPath:

  • Вы пишете, что изображения меняются ежемесячно - вы можете сохранять изображения на диск по мере их использования и просто либо проверять, изменились ли изображения на задний план, либо с заданным ежедневным интервалом, повторно загружать изображения , Ответ Брайана Чападоса кажется интересным.

В зависимости от вашего кода, возможно, существует масса других способов улучшить загрузку изображения. Надеюсь, это поможет ...

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