Back to questions
Альфа-Банк
Junior — Middle
65
Как определить правильный Looper для использования с Handler при обмене данными между фоновым и основным потоками?
Companies where asked
Answer from AI
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().