HandlerThread — удобная обертка, которая автоматически создает и настраивает внутренние механизмы передачи сообщений(Thread, Looper, MessageQueue)

HandlerThread уже содержит в себе Thread, Looper, MessageQueue. Запускается он как обычный поток. После запуска он автоматически(без участия разработчика) настраивает механизм обработки очереди сообщений через объекты Looper, MessageQueue. Тем самым решается проблема Race Condition. После чего ожидает входящих сообщений(Message).

Где и как использовать?

HandlerThread можно применять в множестве случаев где нужна последовательность выполнения задач в фоновом режиме:

  • Для последовательного доступа к файловой системе,
  • Отправки нескольких независимых сетевых запросов
  • Объединение задач в цепочку. Например, для загрузки, обработки и сохранения изображений
  • Вставка задач в очередь по условию. Благодаря возможности детализированного управлением сообщениями в очереди