Sobes.tech
Назад к вопросам
Junior — Middle
66

Как определить правильный Looper для использования с Handler при обмене данными между фоновым и основным потоками?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

В Android Handler связывается с Looper, который управляет очередью сообщений для определённого потока. Чтобы обмениваться данными между фоновым и основным потоками, нужно использовать правильный Looper:

  • Для основного (UI) потока используется Looper.getMainLooper().
  • Для фонового потока можно создать собственный Looper с помощью HandlerThread.

Пример:

// Для отправки сообщений в основной поток
Handler mainHandler = new Handler(Looper.getMainLooper());

// Для фонового потока создаём HandlerThread
HandlerThread handlerThread = new HandlerThread("MyBackgroundThread");
handlerThread.start();
Handler backgroundHandler = new Handler(handlerThread.getLooper());

// Используем mainHandler.post(...) для обновления UI из фонового потока
// Используем backgroundHandler.post(...) для выполнения задач в фоне

Таким образом, правильный Looper выбирается исходя из того, в каком потоке должен выполняться код: для UI — Looper.getMainLooper(), для фонового — HandlerThread.getLooper().