Sobes.tech
Middle

Какво е Looper в Android?

sobes.tech AI

Отговор от AI

Looper е клас в Android, който се използва за работа с опашката за съобщения (MessageQueue) в нишки. Той свързва нишката с опашката за съобщения, позволявайки й да получава и обработва съобщения от нея.

Принцип на работа:

  1. Създаване на Looper: В нишката, която трябва да има опашка за съобщения, се извиква Looper.prepare().
  2. Започване на цикъла: Извиква се Looper.loop(). Този извикване блокира нишката, докато Looper не бъде спрян. Вътре в цикъла, Looper непрекъснато извлича съобщения от MessageQueue и ги изпраща към целевия Handler.
  3. Спиране на Looper: За да приключи работата, се извиква Looper.quit() или Looper.quitSafely().

Handler се използва за изпращане на съобщения към MessageQueue на Looper и за тяхната обработка в свързаната с него нишка. Пример за използване:

// В нишката, където трябва да бъде Looper
new Thread(() -> {
    Looper.prepare(); // 1. Създава се Looper и MessageQueue за тази нишка.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Създава се Handler, свързан с Looper на тази нишка.
        @Override
        public void handleMessage(Message msg) {
            // Обработка на съобщението в тази нишка
        }
    };
    Looper.loop(); // 3. Стартиране на цикъла Looper за обработка на съобщения.
}).start();

// В друга нишка, изпращане на съобщение
handler.sendMessage(/* вашето съобщение */);

Looper е необходим, за да могат нишките да обработват асинхронни задачи и да взаимодействат помежду си, особено при работа с UI нишката (която по подразбиране има Looper).