Sobes.tech
Middle

Co je to Looper v Androidu?

sobes.tech AI

Odpověď od AI

Looper je třída v Androidu, která se používá pro práci s frontou zpráv (MessageQueue) ve vláknech. Spojuje vlákno s frontou zpráv, umožňující mu přijímat a zpracovávat zprávy z této fronty.

Princip fungování:

  1. Vytvoření Looperu: Ve vlákně, které má mít frontu zpráv, se volá Looper.prepare().
  2. Spuštění smyčky: Volá se Looper.loop(). Tento volání blokuje vlákno, dokud není Looper zastaven. Uvnitř smyčky Looper nepřetržitě extrahuje zprávy z MessageQueue a posílá je cílovému Handler.
  3. Zastavení Looperu: Pro ukončení práce se volá Looper.quit() nebo Looper.quitSafely().

Handler se používá k odesílání zpráv do MessageQueue Looperu a jejich zpracování ve spojovaném vlákně. Příklad použití:

// Ve vlákně, kde má být Looper
new Thread(() -> {
    Looper.prepare(); // 1. Vytvoření Looperu a MessageQueue pro toto vlákno.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Vytvoření Handleru spojeného s Looperem tohoto vlákna.
        @Override
        public void handleMessage(Message msg) {
            // Zpracování zprávy v tomto vlákně
        }
    };
    Looper.loop(); // 3. Spuštění smyčky Looperu pro zpracování zpráv.
}).start();

// V jiném vlákně, odeslání zprávy
handler.sendMessage(/* vaše zpráva */);

Looper je nezbytný pro to, aby vlákna mohla zpracovávat asynchronní úkoly a komunikovat mezi sebou, zejména při práci s UI vláknem (které má implicitně Looper).