Middle
Czym jest Looper w Androidzie?
sobes.tech AI
Odpowiedź od AI
Looper to klasa w Android, która służy do obsługi kolejki wiadomości (MessageQueue) w wątkach. Łączy wątek z kolejką wiadomości, umożliwiając mu odbieranie i przetwarzanie wiadomości z tej kolejki.
Zasada działania:
- Tworzenie Looper: W wątku, który ma mieć kolejkę wiadomości, wywołuje się
Looper.prepare(). - Uruchomienie pętli: Wywołuje się
Looper.loop(). To wywołanie blokuje wątek, dopókiLoopernie zostanie zatrzymany. Wewnątrz pętliLoopernieprzerwanie pobiera wiadomości zMessageQueuei wysyła je do docelowegoHandler. - Zatrzymanie Looper: Aby zakończyć pracę, wywołuje się
Looper.quit()lubLooper.quitSafely().
Handler służy do wysyłania wiadomości do MessageQueue Loopera i ich obsługi w powiązanym z nim wątku. Przykład użycia:
// W wątku, w którym ma być Looper
new Thread(() -> {
Looper.prepare(); // 1. Tworzy się Looper i MessageQueue dla tego wątku.
Handler handler = new Handler(Looper.myLooper()) { // 2. Tworzy się Handler powiązany z Looper tego wątku.
@Override
public void handleMessage(Message msg) {
// Obsługa wiadomości w tym wątku
}
};
Looper.loop(); // 3. Uruchamia się pętla Looper do obsługi wiadomości.
}).start();
// W innym wątku, wysyłanie wiadomości
handler.sendMessage(/* twoja wiadomość */);
Looper jest niezbędny, aby wątki mogły obsługiwać zadania asynchroniczne i komunikować się między sobą, szczególnie podczas pracy z wątkiem UI (który domyślnie ma Looper).