Sobes.tech
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:

  1. Wątek, który chce używać Looper, wywołuje Looper.prepare() w celu utworzenia Looper i MessageQueue.
  2. Wątek wywołuje Looper.loop() w celu uruchomienia pętli obsługi wiadomości. Funkcja ta blokuje wątek do czasu wywołania Looper.quit().
  3. Handler tworzy i wysyła wiadomości do MessageQueue, powiązane z tym Looperem.
  4. 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
    }
}