Middle
Czym jest Looper w Androidzie?
sobes.tech AI
Odpowiedź od AI
Looper to obiekt zaprojektowany do wielokrotnego wykonywania zadania w jednym wątku. Tworzy pętlę zdarzeń, która przetwarza wiadomości z kolejki wiadomości (MessageQueue).
Główne komponenty:
- MessageQueue: Kolejka zadań lub wiadomości.
- Looper: Obiekt, który wyciąga wiadomości z MessageQueue i wysyła je do odpowiedniego Handlera.
- Handler: Obiekt powiązany z określonym wątkiem i MessageQueue. Służy do wysyłania wiadomości do MessageQueue i ich obsługi.
Zasada działania:
- Wątek, który chce używać Looper, wywołuje
Looper.prepare()w celu utworzenia Looper i MessageQueue. - Wątek wywołuje
Looper.loop()w celu uruchomienia pętli obsługi wiadomości. Funkcja ta blokuje wątek do czasu wywołaniaLooper.quit(). - Handler tworzy i wysyła wiadomości do MessageQueue, powiązane z tym Looperem.
- Looper wyciąga wiadomości z MessageQueue w kolejności i przekazuje je z powrotem do Handlera do obsługi w metodzie
handleMessage().
Zastosowania:
- Wątki interfejsu użytkownika (UI Thread) w Androidzie używają Looper do obsługi zdarzeń takich jak kliknięcia i dotknięcia bez blokowania UI.
- Wątki tła mogą używać Looper do wykonywania powtarzających się zadań lub obsługi wiadomości wysyłanych z innych wątków.
// Przykład tworzenia i uruchamiania Looper w wątku w tle
class WorkerThread extends Thread {
public Handler handler;
public void run() {
Looper.prepare(); // Tworzymy Looper i MessageQueue dla tego wątku
handler = new Handler(Looper.myLooper()) { // Tworzymy Handler
@Override
public void handleMessage(Message msg) {
// Obsługa wiadomości
}
};
Looper.loop(); // Uruchamiamy pętlę obsługi wiadomości
}
}