Sobes.tech
Junior

Android-də əsas axın necə işləyir?

sobes.tech Süni İntellekt

AI-dan cavab

Android-da Əsas Axın (Main Thread) və ya UI axını istifadəçi interfeysinin çəkilməsi, giriş hadisələrinin işlənməsi və tətbiqin çox komponentlərinin (Activity, Service, Broadcast Receiver) icrası üçün cavabdehdir.

İş prinsipi LooperHandler mexanizminə əsaslanır.

  1. Looper: Bu, mesajlar (Message) növbəsindən (MessageQueue) döngüvi şəkildə çıxarır və onları müvafiq Handler-ə emal üçün ötürür. Hər bir Looper-ə sahib iş axını "döngə" şəklində olur. Əsas iş axını avtomatik olaraq Looper ilə yaradılır.
  2. MessageQueue: Bu, emal üçün mesajların siyahısını saxlayan məlumat strukturu. Mesajlar məlumatlar (obyektlər, primitivlər) və onları emal edəcək Handler-ə istinad edə bilər.
  3. Handler: Bu, iş axını ilə Looper və MessageQueue-ə bağlı olan sinifdir. O, mesajları MessageQueue-ə göndərməyə və Looper tərəfindən çıxarılmış mesajları emal etməyə imkan verir. Handler, mesajları həm öz iş axınına (məsələn, tapşırıqları planlaşdırmaq üçün), həm də Looper ilə digər iş axınlarına göndərə bilər.

İş prinsipi:

  1. Əsas iş axını Looper-i işə salır və loop() döngüsünü fasiləsiz işləyir.
  2. Sistem və ya digər iş axınları Handler-lər vasitəsilə əsas iş axınının MessageQueue-una toxunma hadisələri, Activity-nin həyat dövrü ilə bağlı mesajlar göndərir.
  3. Looper, MessageQueue-dan növbəti mesajı çıxarır.
  4. Looper, mesajı ona bağlı Handler-ə ötürür.
  5. Handler, mesajı emal edir və müvafiq loqikanı icra edir (məsələn, UI-ni yeniləmək).

Vacib: UI yeniləməsi ilə əlaqəli bütün əməliyyatlar yalnız əsas iş axınında həyata keçirilməlidir. Uzun müddətli əməliyyatlar (şəbəkə sorğuları, fayllarla işləmək) əsas iş axınında həyata keçirildikdə, onun bloklanmasına səbəb olacaq (ANR - Application Not Responding) və tətbiqin donmasına gətirib çıxaracaq. Belə əməliyyatlar üçün iş axınlarından istifadə edilməlidir (məsələn, Coroutines, RxJava, ExecutorService, AsyncTask ilə).