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:
- Looper dan foydalanishni istagan thread
Looper.prepare()ni chaqiradi va Looper hamda MessageQueue ni yaratadi. - Thread
Looper.loop()ni chaqiradi va xabarlarni qayta ishlash tsiklini boshlaydi. Bu funksiyaLooper.quit()chaqirilmaguncha thread ni bloklaydi. - Handler bu Looper bilan bog'langan MessageQueue ga xabarlar yaratadi va yuboradi.
- 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
}
}