Получение большого количества изображений в программе recyclerView android - PullRequest
0 голосов
/ 30 сентября 2018

в моем недавнем проекте Android я должен получить большое количество изображений из Интернета и показать их в своей основной деятельности (что-то вроде изучения части приложения Instagram).Я использовал recyclerView с gridLayoutManager из 3 столбцов, и мне нужно получить что-то вроде 700 изображений из URL.Когда я открываю приложение и комментирую часть получаемого изображения, приложение работает отлично (приложение получает информацию о каждой плитке, но не отображает изображения).Но когда я начинаю устанавливать растровые изображения, приложение начинает зависать и зависать после загрузки около ста изображений.Что вы рекомендуете мне делать?И еще один вопрос: было ли использование recyclerView умной идеей?Спасибо за ваш ответ.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Вы должны опубликовать здесь некоторый код, но, кажется, вы запрашиваете эффективную настройку.

Прежде всего, попробуйте использовать некоторые библиотеки кэширования изображений, такие как Glide или Пикассо .Он управляет и кэширует ваши изображения локально, так что вы не в конечном итоге делаете несколько запросов на одно и то же изображение.

Это решает большую часть вашей проблемы и не пытается загружать 700 изображений в целом и отображать использование ленивых средств загрузкисначала загружайте первые 10-20 изображений, а когда пользовательские свитки делают еще один вызов API для еще 10-20 и т. д.

Вот статья о том, как использовать Glide и какэто работает.

https://futurestud.io/tutorials/glide-image-resizing-scaling

0 голосов
/ 30 сентября 2018

Не загружайте сотни изображений.Это требует нескольких вещей:

1) Не храните изображения в памяти адаптера.Сохраните url / resourceid / что-либо из изображения, чтобы вы могли загрузить его по требованию.

2) Используйте LRU-кэш изображений, ограниченный по размеру, и загружайте изображения через него.

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

4) Я бы предложил загрузитьобразы и запись их на диск, затем загружая их с диска по мере необходимости.Это избавит вас от необходимости хранить весь файл в памяти для декодирования при загрузке, что уменьшит использование памяти при загрузке.

5) Не декодируйте изображение в потоке пользовательского интерфейса.Сделайте это в другом потоке.

6) Если вам не нужно отображать полноразмерные изображения, создайте миниатюры.

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

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