Главная » Разработка для Android » Использование фоновых потоков

0

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

ПРИМЕЧАНИЕ

Все компоненты приложения в Android, включая Активности, Сервисы и Приемники широковещательных намерений, начинают работу в глав- ном потоке приложения. В результате трудоемкие операции в любом из этих компонентов блокируют все остальные части приложения, включая Сервисы и Активности на переднем плане.

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

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

GUI  перед обновлением  пользовательского интерфейса. В этом разделе описываются оба подхода.

Применение фоновых потоков — необходимое условие, если вы хотите избежать появления диалогового окна для принудительного закрытия при- ложения,  которое уже описывалось в главе 2. Когда Активность в Android на протяжении 5 секунд не отвечает на события пользовательского ввода (например, нажатие  кнопки) или Приемник широковещательных намерений не завершает работу обработчика onReceive в течение 10 секунд, считается, что приложение зависло.

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

Использование AsyncTask

для запуска асинхронных задач

Класс AsyncTask предлагает простой и удобный механизм для переме- щения трудоемких операций в фоновый поток. Благодаря ему вы получаете удобство синхронизации обработчиков событий с графическим потоком, что позволяет  обновлять Представления и другие элементы  пользовательского интерфейса для отчета о ходе выполнения задачи или для вывода резуль- татов, когда задача завершена.

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

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии