Sobes.tech
Middle

Android'da Looper nima?

sobes.tech AI

AIdan javob

Looper — bu bir thread ichida bir vazifani takroran bajarish uchun mo'ljallangan obyekt. U voqealar tsiklini yaratadi va xabarlar navbatidan (MessageQueue) xabarlarni qayta ishlaydi.

Asosiy komponentlar:

  • MessageQueue: Vazifalar yoki xabarlar navbati.
  • Looper: MessageQueue dan xabarlarni chiqaradigan va ularni mos Handler ga yuboradigan obyekt.
  • Handler: Ma'lum bir Thread va MessageQueue bilan bog'langan obyekt. U MessageQueue ga xabar yuborish va ularni qayta ishlash uchun ishlatiladi.

Ishlash prinsipi:

  1. Looper dan foydalanishni istagan thread Looper.prepare() ni chaqiradi va Looper hamda MessageQueue ni yaratadi.
  2. Thread Looper.loop() ni chaqiradi va xabarlarni qayta ishlash tsiklini boshlaydi. Bu funksiya Looper.quit() chaqirilmaguncha thread ni bloklaydi.
  3. Handler bu Looper bilan bog'langan MessageQueue ga xabarlar yaratadi va yuboradi.
  4. Looper xabarlarni MessageQueue dan tartib bilan chiqaradi va ularni handleMessage() metodida qayta ishlash uchun Handler ga qaytaradi.

Qo'llanilishi:

  • Android dagi UI Thread (foydalanuvchi interfeysi thread) Looper dan foydalanadi, bu voqealarni, masalan, kliklar va teginishlarni UI ni bloklamasdan qayta ishlash uchun.
  • Orqa fon threadlar Looper dan foydalanishi mumkin, bu takroriy vazifalarni bajarish yoki boshqa threadlardan yuborilgan xabarlarni qayta ishlash uchun.
// Orqa fon threadda Looper yaratish va ishga tushirish misoli
class WorkerThread extends Thread {
    public Handler handler;

    public void run() {
        Looper.prepare(); // Bu thread uchun Looper va MessageQueue ni yaratamiz
        handler = new Handler(Looper.myLooper()) { // Handler ni yaratamiz
            @Override
            public void handleMessage(Message msg) {
                // Xabarni bu yerda qayta ishlash
            }
        };
        Looper.loop(); // Xabarlarni qayta ishlash tsiklini boshlash
    }
}