Где запускается Looper

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

Ответ

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() для остановки