Ответ
Looper — это механизм, который обрабатывает сообщения (Message) в потоке, создавая для него бесконечный цикл (loop()). Он извлекает сообщения из MessageQueue и передает их Handler для обработки.
Основные компоненты:
- MessageQueue — очередь сообщений (FIFO).
- Handler — отправляет и обрабатывает сообщения.
- Looper — управляет циклом обработки.
Пример:
class WorkerThread : Thread() {
lateinit var handler: Handler
override fun run() {
Looper.prepare() // Инициализация Looper для потока
handler = object : Handler(Looper.myLooper()!!) {
override fun handleMessage(msg: Message) {
// Обработка сообщения
}
}
Looper.loop() // Запуск цикла
}
}
Нюансы:
Looperнельзя создать без вызоваprepare().- Главный поток (
MainThread) уже имеетLooperпо умолчанию. loop()работает бесконечно, пока не будет вызванquit().