Sobes.tech
Junior

Androidda Handler nima?

sobes.tech AI

AIdan javob

Android'da Handler — bu oqimlar o'rtasida o'zaro ta'sir qilish uchun mexanizmdir. U Message va Runnable ni bir oqimdan boshqasining MessageQueue (Xabarlar navbati) ga yuborish va uni ishlash imkonini beradi.

Asosiy komponentlar:

  • Handler: Maxsus oqim va uning MessageQueue bilan bog'langan obyekt. Xabarlar va Runnable ni navbatga yuboradi va ularni chiqarib, ishlov beradi.
  • Looper: Oqimga bog'langan obyekt. U oqimni "ishga tushiradi" va doimiy ravishda MessageQueue dan vazifalarni (Message yoki Runnable) chiqarib, ularni mos Handler ga yuboradi.
  • MessageQueue: Looper tomonidan ishlov beriladigan vazifalar (Message yoki Runnable) navbati.

Qanday ishlaydi:

  1. Handler, xabarlarni ishlov beradigan oqimda (masalan, UI oqimida) yaratiladi.
  2. Bu Handler, o'sha oqimning Looper va MessageQueue bilan bog'langan.
  3. Boshqa oqimdan (masalan, fon oqimidan) xabarlar yoki Runnable lar Handler metodlari orqali MessageQueue ga yuborilishi mumkin (post yoki sendMessage).
  4. Qabul qiluvchi oqimning Looper, MessageQueue dan vazifalarni chiqaradi.
  5. Looper, har bir vazifani mos Handler ga yuboradi va uni ishlov beradi.

Foydalanish misoli fon oqimidan UI ni yangilash uchun:

// UI oqimida Handler yaratish
Handler uiHandler = new Handler(Looper.getMainLooper());

// Fon oqimida:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Uzun davom etadigan operatsiyani bajarish...

        // Handler orqali UI ni yangilash
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Bu yerda UI ni xavfsiz yangilash kodi
                textView.setText("Operatsiya bajarildi!");
            }
        });
    }
}).start();

Handler, ma'lum bir oqimda (ko'pincha UI) xavfsiz operatsiyalarni bajarish uchun ishlatiladi va asosiy oqimni bloklamaydi. Bu, UI bilan bog'liq operatsiyalar faqat asosiy oqimda bajarilishi kerakligi uchun muhimdir.