Junior — Middle
86
Jak spolu komunikují komponenty Handler a Looper v systému zpracování zpráv?
Společnosti byly požádány
Odpověď od AI
sobes.tech AI
В Android система обработки сообщений основана на взаимодействии компонентов Handler и Looper. Looper отвечает за бесконечный цикл обработки сообщений из очереди сообщений (MessageQueue), а Handler служит интерфейсом для отправки и обработки этих сообщений.
Когда создаётся Handler, он связывается с Looper текущего потока. Handler помещает сообщения или Runnable объекты в очередь сообщений Looper. Looper циклично извлекает сообщения из очереди и передаёт их обратно Handler для обработки в методе handleMessage().
Таким образом, Handler выступает посредником для отправки и обработки сообщений, а Looper обеспечивает непрерывный цикл обработки этих сообщений в потоке.
Пример:
// В потоке создаём Looper и Handler
Looper.prepare();
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// Обработка сообщения
}
};
Looper.loop();
// Отправка сообщения
Message msg = handler.obtainMessage();
handler.sendMessage(msg);