Может ли быть несколько Looper

«Может ли быть несколько Looper» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в Android может быть несколько Looper'ов, но каждый должен быть в своем потоке. Основной Looper (главный поток) создается автоматически, а для других потоков его нужно явно вызывать через Looper.prepare() перед использованием.

Пример создания Looper в фоновом потоке:

Thread {
    Looper.prepare()
    val handler = Handler(Looper.myLooper()!!)
    handler.post { /* выполнение кода в этом потоке */ }
    Looper.loop()
}.start()

Важно: Looper.loop() блокирует поток, поэтому его нужно запускать в отдельном потоке. Для остановки используй Looper.quit() или Looper.quitSafely().