Sobes.tech
Junior

Android'de Handler nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de Handler, iş parçacıkları arasındaki etkileşim için bir mekanizmadır. Message ve Runnable nesnelerini bir iş parçacığından diğerinin MessageQueue'sine (Mesaj Kuyruğu) göndermeye ve işlemeye olanak tanır.

Ana bileşenler:

  • Handler: Belirli bir iş parçacığı ve onun MessageQueue'su ile ilişkili nesne. Mesajlar ve Runnable'ları kuyruğa gönderir ve bunları kuyruğundan çıkarak işler.
  • Looper: Bir iş parçacığına bağlı nesne. İş parçacığını "başlatır" ve sürekli olarak MessageQueue'den görevleri (Message veya Runnable) çıkarır ve bunları uygun Handler'a ileterek işler.
  • MessageQueue: Looper tarafından işlenecek görevlerin (Message veya Runnable) sıralandığı kuyruk.

Nasıl çalışır:

  1. Handler, mesajları işleyecek iş parçacığında oluşturulur (örneğin, UI iş parçacığı).
  2. Bu Handler, o iş parçacığının Looper'ına ve MessageQueue'suna bağlıdır.
  3. Başka bir iş parçacığından (örneğin, arka plan) mesajlar veya Runnable'lar Handler'ın metodlarıyla MessageQueue'ye gönderilebilir (post veya sendMessage).
  4. Alıcı iş parçacığının Looper'ı MessageQueue'den görevleri çıkarır.
  5. Looper, her görevi uygun Handler'a ileterek işler.

Arka plan iş parçacığından UI'yi güncellemek için kullanım örneği:

// UI iş parçacığında Handler oluşturma
Handler uiHandler = new Handler(Looper.getMainLooper());

// Arka plan iş parçacığında:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Uzun süren işlemi gerçekleştir...

        // Handler aracılığıyla UI'yi güncelle
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // UI'yi güvenli bir şekilde güncelleyen kod
                textView.setText("İşlem tamamlandı!");
            }
        });
    }
}).start();

Handler, belirli bir iş parçacığında (çoğunlukla UI) işlemleri güvenli bir şekilde gerçekleştirmek için kullanılır ve ana iş parçacığını engellemez. Bu, çoğu UI işleminin yalnızca ana iş parçacığında yapılması gerektiği için önemlidir.