Комментарии 13
Спасибо за вторую уже публикацию о разработке под Андроид :) очень интересно, надеюсь что вы будете продолжать дальше.
Почему вы не используете класс AsyncTask для разделения потоков?
А что произойдет если в момент загрузки пользователь повернет девайс, (сменит ориентацию экрана)?
Спасибо. То, что доктор прописал.
Понижение приоритета потока интересная мысль, надо будет воспользоваться :)
Исходники скачать не получается, поэтому поинтересуюсь тут:
а при быстром скроллинге картинки в один View загружаться не будут?
Исходники скачать не получается, поэтому поинтересуюсь тут:
а при быстром скроллинге картинки в один View загружаться не будут?
скачал сорцы:
Вот в чем вопрос заключался:
при прокрутке метод getView у FetchImageAdapter будет вызывать некоторое количество раз.
При этом объект ViewHolder, передаваемый в качестве параметра, может быть одинаковым для разных элементов коллекции. тут все ок (для оптимизации).
И это означает, что в один и тот же объект с разной периодичностью, будет из отдельных потоков загружаться некоторое количество картинок, принадлежацих разным объектам. Последствия думаю очевидны.
зы. Поправьте меня, если где ошибся.
Вот в чем вопрос заключался:
при прокрутке метод getView у FetchImageAdapter будет вызывать некоторое количество раз.
При этом объект ViewHolder, передаваемый в качестве параметра, может быть одинаковым для разных элементов коллекции. тут все ок (для оптимизации).
И это означает, что в один и тот же объект с разной периодичностью, будет из отдельных потоков загружаться некоторое количество картинок, принадлежацих разным объектам. Последствия думаю очевидны.
зы. Поправьте меня, если где ошибся.
в данном примере будут, если список будет достаточно длинный. но этого можно избежать, созданием HashMap ключами которого будут ImageView а значениями, — URL. тогда, если пришел запрос на новое изображения для уже существующего в HashMap ImageView, обновляем значение, а изображение по пердыдущему URL не присваевать ImageView. Надеюсь понятно изложил.
Опять-таки, советую создать кеш скаченных изображений, что бы не скачивать их снова. Но это уже тема для другого поста ;)
Опять-таки, советую создать кеш скаченных изображений, что бы не скачивать их снова. Но это уже тема для другого поста ;)
Идея более-менее понятна, хотя на мой вкус проще поток обрывать.
Иначе при прокрутке память потоками быстро засрется.
Кеширование картинок в памяти тоже легко может упереться на OutOfMemory
зы. отталкиваюсь от опыта своего приложения, где средняя длина списка около 200, а размер картинки около 150х150
Иначе при прокрутке память потоками быстро засрется.
Кеширование картинок в памяти тоже легко может упереться на OutOfMemory
зы. отталкиваюсь от опыта своего приложения, где средняя длина списка около 200, а размер картинки около 150х150
1) кешируйте и складывайте картинки на диск, и делайте recycle() ненужным, тогда OutOfMemory не будет. а если в кеше нет изображения, востанавливаем его с диска.
2) обрывать поток означает то, что нужно будет создавать его опять, если пользователь будет скролить список вверх (назад), что не есть хорошо, ИМХО.
2) обрывать поток означает то, что нужно будет создавать его опять, если пользователь будет скролить список вверх (назад), что не есть хорошо, ИМХО.
Спасибо, пробовал до этого сделать как в статье Tom van Zummeren'а
blog.jteam.nl/2009/09/17/exploring-the-world-of-android-part-2/
но что-то у меня с руками и потоками и не сложилось, хотя он и делал кеширование. Самое главное что шаблон отрисовывается а картинки потом подгружаются
blog.jteam.nl/2009/09/17/exploring-the-world-of-android-part-2/
но что-то у меня с руками и потоками и не сложилось, хотя он и делал кеширование. Самое главное что шаблон отрисовывается а картинки потом подгружаются
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как реализовать загрузку изображений в список в отдельном потоке на Android