Ответ
Looper с пустой очередью не блокирует поток, а продолжает выполнение. Однако, если в очереди нет сообщений (MessageQueue пуста), Looper будет ждать (MessageQueue.next() заблокируется) до появления новых сообщений или пока не будет вызван quit().
Пример:
val handlerThread = HandlerThread("MyThread").apply { start() }
val handler = Handler(handlerThread.looper)
// Отправляем сообщение с задержкой
handler.postDelayed({
Log.d("TEST", "Message processed")
}, 1000)
// Looper будет ждать 1 секунду, затем обработает сообщение
Важно: Looper не потребляет CPU в режиме ожидания, используя механизм epoll в Linux.