Handler в Android — это механизм для отправки и обработки сообщений и Runnable объектов, связанных с очередью сообщений (MessageQueue) определенного потока (Looper).
Handler привязывается к потоку, в котором он создан (или указан явно при создании), имеющему Looper и MessageQueue. Он позволяет запланировать выполнение кода в этом потоке.
Основные функции Handler:
- Отправка: Помещение сообщений (Message) или Runnable в конец очереди сообщений текущего потока или в другое положение.
- Обработка: Получение сообщений из очереди и их обработка (путем вызова колбэка в
handleMessage() или выполнения Runnable).
Типичные сценарии использования:
- Перемещение выполнения с фонового потока на главный (UI) поток: Обновление UI-элементов, которые могут быть изменены только из главного потока.
- Задержка выполнения кода: Отложенное выполнение задачи через определенное время.
- Планирование повторяющихся задач: Выполнение задачи через регулярные интервалы.
Основные компоненты, связанные с Handler:
- Handler: Сам объект, отправляющий и обрабатывающий сообщения.
- Message: Объект, содержащий данные для передачи между потоками.
- Runnable: Интерфейс для выполнения задач в другом потоке.
- Looper: Запускает бесконечный цикл, извлекающий сообщения из очереди.
- MessageQueue: Очередь сообщений, обрабатываемых Looper.
Пример использования для выполнения кода в UI-потоке из фонового:
java