Назад к вопросам
Middle
84
questionbank
Что такое Looper в Android?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Looper — это класс в Android, который используется для работы с очередью сообщений (MessageQueue) в потоках. Он связывает поток с очередью сообщений, позволяя ему получать и обрабатывать сообщения из этой очереди.
Принцип работы:
- Создание Looper: В потоке, который должен иметь очередь сообщений, вызывается
Looper.prepare(). - Запуск цикла: Вызывается
Looper.loop(). Этот вызов блокирует поток до тех пор, покаLooperне будет остановлен. Внутри циклаLooperнепрерывно извлекает сообщения изMessageQueueи отправляет их целевомуHandler. - Остановка Looper: Для завершения работы
LooperвызываетсяLooper.quit()илиLooper.quitSafely().
Handler используется для отправки сообщений в MessageQueue Looper'а и обработки их в связанном с этим Looper'ом потоке. Пример использования:
// В потоке, где должен быть Looper
new Thread(() -> {
Looper.prepare(); // 1. Создается Looper и MessageQueue для этого потока.
Handler handler = new Handler(Looper.myLooper()) { // 2. Создается Handler, связанный с Looper'ом этого потока.
@Override
public void handleMessage(Message msg) {
// Обработка сообщения в этом потоке
}
};
Looper.loop(); // 3. Запускается цикл Looper'а для обработки сообщений.
}).start();
// В другом потоке, отправка сообщения
handler.sendMessage(/* ваше сообщение */);
Looper необходим для того, чтобы потоки могли обрабатывать асинхронные задачи и взаимодействия между потоками, особенно при работе с UI-потоком (который по умолчанию имеет Looper).