Ответ
Looper запускается в основном потоке (UI-потоке) приложения автоматически при старте. В других потоках его нужно запускать вручную вызовом Looper.prepare() перед созданием Handler. После подготовки Looper нужно запустить с Looper.loop().
Пример для фонового потока:
Thread {
Looper.prepare()
val handler = Handler(Looper.myLooper()!!)
// Теперь можно использовать handler
Looper.loop()
}.start()
Основные моменты:
- В UI-потоке Looper уже создан системой
prepare()создает Looper для текущего потокаloop()запускает обработку сообщений- Не забывайте вызывать
quit()для остановки