Сайт разработчика Александр Климова

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Используем AsyncTask для загрузки изображений из сети

4-й курс/закрытая зона

Базовый пример
Загружаем картинку
Загружаем серию картинкок
Загружаем картинку с индикатором загрузки

В стандартном приложении все действия, работающие с визуальными компонентами, выполняются в отдельном UI-потоке. Если в этот поток поместить «долгоиграющие» операции, например, загружать картинки с сайтов, пользователю постоянно будет казаться, что приложение зависает. Более того, приложение действительно может зависнуть и получить ошибку ANR (Application not responding), если приложение не отвечает более пяти секунд. Необходимо перенести подобные операции в отдельный поток, а в основном UI-потоке выводить индикатор выполнения задачи или конечный результат.

Когда деревья были большими, а коты были котятами, т.е. до версии Android 2.3.3 включительно, разработчик мог не прислушиваться к подобным рекомендациям и загружать картинки в основном потоке. Но если проделать такую же операцию в проекте, расчитанном на Android 4.0, то код не сработает и приложение будет вылетать с ошибкой. Поэтому придётся играть по новым правилам и использовать класс AsyncTask.

Теоретическую часть описания класса можно найти в отдельной статье. Коротко напомним алгоритм:

  • Наследуемся от AsyncTask
  • Переопределяем некоторые методы класса
  • Создаём экземпляр созданного класса и вызываем метод execute()

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

Во время загрузки.

AsyncTask

После окончания загрузки

AsyncTask

Реклама