Sobes.tech
Junior

Android'de ana akış nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de Ana İş Parçası (Main Thread) veya UI iş parçacığı, kullanıcı arayüzünün çiziminden, giriş olaylarının işlenmesinden ve uygulamanın çoğu bileşeninin (Activity, Service, Broadcast Receiver) yürütülmesinden sorumludur.

İşleyişi Looper ve Handler mekanizmasına dayanır.

  1. Looper: Bu, mesajlar (Message) kuyruğundan (MessageQueue) döngüsel olarak mesajları çıkaran ve bunları ilgili Handler'a ileten bir sınıftır. Looper'a sahip her iş parçacığı "döngüsel" olur. Ana iş parçacığı otomatik olarak bir Looper ile oluşturulur.
  2. MessageQueue: Bu, işlenmesi gereken mesajların listesini tutan veri yapısıdır. Mesajlar, veri (nesneler, ilkel tipler) ve onları işleyecek Handler referansı içerebilir.
  3. Handler: Bu, iş parçacığının Looper ve MessageQueue'su ile bağlantılı bir sınıftır. Mesajları MessageQueue'ya göndermeyi ve Looper tarafından çıkarılan mesajları işlemeyi sağlar. Handler, mesajları hem kendi iş parçacığına (örneğin, görevleri planlayarak) hem de Looper ile diğer iş parçacıklarına gönderebilir.

Çalışma prensibi:

  1. Ana iş parçacığının Looper'ı başlatılır ve sürekli loop() döngüsünü işler.
  2. Sistem veya diğer iş parçacıkları, Handler'lar aracılığıyla ana iş parçacığının MessageQueue'suna dokunma olayları, yaşam döngüsü mesajları gibi mesajlar gönderir.
  3. Looper, MessageQueue'dan bir sonraki mesajı çıkarır.
  4. Looper, mesajı bu mesajla ilişkili Handler'a iletir.
  5. Handler, mesajı işler ve ilgili mantığı yürütür (örneğin, UI'yi güncellemek).

Önemli: UI güncellemesiyle ilgili tüm işlemler yalnızca ana iş parçacığında yapılmalıdır. Uzun süren işlemler (ağ istekleri, dosya işlemleri) ana iş parçacığında yürütüldüğünde, uygulama kilitlenir (ANR - Uygulama Yanıt Vermiyor) ve uygulama donabilir. Bu tür işlemler için worker iş parçacıkları kullanılmalıdır (örneğin, Coroutines, RxJava, ExecutorService, AsyncTask ile).