г. Москва, Милютинский пер., д.8, стр.2 Тел.: 8 (495) 999-70-33 |
|
|
Время работы: пн.-пт. с 9:00-21:00 сб.-вс. с 11:00-17:00 |
|
|
Реализация WorkerThreadRunnable
Давайте посмотрим, что делает рабочий поток, проанализировав реализацию класса WorkerThreadRunnable. Исходный код этого класса приведен в листинге 17.7. При изучении кода уделяйте внимание комментариям. Ключевые концепции будут подробно описаны сразу после листинга.
С листингом 17.7 связаны два важных момента. В методе гип() поток переводится в спящий режим на 1 секунду, а также вызываются методы для информирования главного потока о том, что рабочий поток находится в начале, середине или конце обработки. Кроме того, предусмотрен вызов Utils.logThreadSignature() для идентификации потока. Однако в реальном приложении вместо метода э1еер() в коде будет вызываться полезная функция, отнимающая столько времени, сколько это необходимо. Можно считать, что э1еер() эмулирует элемент работы, который требует на выполнение несколько секунд. Возможно вам понадобится ремонт компьютеров ярославль.
Реализация ReportStatusHandler
Все информирующие методы в листинге 17.7 создают соответствующее строковое сообщение и отправляют его главному потоку с помощью класса РерогбЗбабизНап^ег, код которого приведен в листинге 17.8.
Код класса ReportStatusHandler довольно прост. Когда вызывается метод han- dleMessage (), обработчик сообщает родительской управляющей активности о том, что рабочий поток отправил строку состояния с помощью метода appendText(). Родительская активность может отреагировать на это сообщение любым необходимым образом. В данном случае сообщение просто выводится на экран активности.