Sobes.tech
Junior

Android-də Handler nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Handler, MessageRunnable obyektlərini Handler-i yaradan axın (thread) ilə başqa bir axına (və ya eyni axına) göndərmək və işləmək üçün mexanizmdir.

O, kodun müəyyən bir axında icrasını planlaşdırmağa imkan verir, hətta siz başqa bir axındasınızsa belə. Handler, mesajların növbəsini idarə edən Looper ilə əlaqəlidir.

Əsas komponentlər:

  • Handler: Mesajlar və tapşırıqları göndərir və onları əlaqəli axında işləyir.
  • Looper: Müəyyən bir axın üçün mesajların növbəsini işləmə dövrünü başlatır. Hər bir axın yalnız bir Looper-ə sahib ola bilər, lakin hər axın standart olaraq onu ehtiva etmir (məsələn, əsas axın var).
  • MessageQueue: Looper ilə əlaqəli mesajların növbəsi.
  • Message/Runnable: Handler vasitəsilə göndərilən və yerinə yetirilən obyektlər.

Tətbiqlər:

  • UI olmayan axından UI yeniləməsi.
  • Gecikmə ilə və ya müəyyən vaxtda tapşırıqların planlaşdırılması.
  • Axınlar arasında mesaj göndərilməsi.
// Arxa planda işləyən axından UI-ni yeniləmək üçün Handler nümunəsi
Handler mainHandler = new Handler(Looper.getMainLooper()); // Əsas axının Handler-i alınır

new Thread(() -> {
    // Arxa planda uzun müddətli əməliyyat yerinə yetirin
    String result = doBackgroundWork();

    // Nəticəni əsas axına göndərərək UI-ni yeniləyin
    mainHandler.post(() -> {
        // Bu kod əsas axında icra olunacaq
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Uzun işin simulyasiyası
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Arxa plan işi nəticəsi";
}

private void updateTextView(String text) {
    // UI elementini yeniləyin
    // someTextView.setText(text);
}