Sobes.tech
Middle

Android'de Looper nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Looper Android'de, mesaj kuyruğu (MessageQueue) ile çalışan bir sınıftır. Bir thread ile mesaj kuyruğunu bağlar ve bu kuyruğa gelen mesajları alıp işler.

Çalışma prensibi:

  1. Looper Oluşumu: Mesaj kuyruğu olması gereken thread'de Looper.prepare() çağrılır.
  2. Döngünün başlatılması: Looper.loop() çağrılır. Bu çağrı, Looper durdurulana kadar thread'i engeller. Döngü içinde, Looper sürekli olarak MessageQueue'ndan mesajlar alır ve hedef Handler'a gönderir.
  3. Looper'un durdurulması: İşlem sona erdirilmek istendiğinde, Looper.quit() veya Looper.quitSafely() çağrılır.

Handler, Looper'ın mesaj kuyruğuna mesaj göndermek ve bunları bu Looper ile ilişkili thread'de işlemek için kullanılır. Kullanım örneği:

// Looper'ın olması gereken thread'de
new Thread(() -> {
    Looper.prepare(); // 1. Bu thread için bir Looper ve MessageQueue oluşturulur.
    Handler handler = new Handler(Looper.myLooper()) { // 2. Bu thread'in Looper'ına bağlı bir Handler oluşturulur.
        @Override
        public void handleMessage(Message msg) {
            // Bu thread'de mesaj işleme
        }
    };
    Looper.loop(); // 3. Mesajları işlemek için Looper döngüsü başlatılır.
}).start();

// Başka bir thread'de mesaj gönderme
handler.sendMessage(/* mesajınız */);

Looper, thread'lerin asenkron görevleri işlemesi ve thread'ler arası etkileşim kurması için gereklidir, özellikle UI thread ile çalışırken (varsayılan olarak Looper'a sahiptir).