Выбор ответа Middle Многопоточность и WorkManager обновлено

Looper и Handler

Вопрос

Как устроен главный поток Android?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Поток с Looper, который бесконечно берёт сообщения из MessageQueue. Looper.loop() в главном потоке крутит очередь сообщений: события ввода, кадры, колбэки жизненного цикла и всё, что положили через Handler.post.

Варианты ответа

  1. Поток с Looper, который бесконечно берёт сообщения из MessageQueueправильный ответ
  2. Обычный поток, который выполняет метод main первой активити и после этого завершается
  3. Пул из нескольких потоков, между которыми система делит события UI
  4. Поток, который создают корутины через Dispatchers.Main при старте

Разбор

Looper.loop() в главном потоке крутит очередь сообщений: события ввода, кадры, колбэки жизненного цикла и всё, что положили через Handler.post. Dispatchers.Main в корутинах тоже отправляет продолжения в эту очередь. Поэтому одна долгая задача блокирует всё остальное. Пулом главный поток не является, и корутины его не создают.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.