Sobes.tech
Middle

Handler və Looper istifadə edərək əsas axında mesajlar necə əldə edilir?

sobes.tech Süni İntellekt

AI-dan cavab

  1. Handler yaradın: Onu əsas axın Looper ilə əlaqələndirin.
  2. Runnable və ya Message göndərin: Handler vasitəsilə əlaqəli axında icra üçün.
// Əsas axında
val mainHandler = Handler(Looper.getMainLooper())

// Runnable yaradıb göndərmək
mainHandler.post {
    // Əsas axında icra olunan kod
}

// Message yaradıb göndərmək
val message = Message.obtain().apply {
    what = 1 // Təsadüfi mesaj identifikatoru
    obj = "hello" // Əlavə məlumatlar
}
mainHandler.sendMessage(message)
  • Looper.getMainLooper() əsas axın ilə əlaqəli Looper-ı əldə edir.
  • Handler(Looper.getMainLooper()) mesajları işləyən Handler yaradır, bu mesajlar əsas axında işlənir.
  • post(Runnable) RunnableLooper-ın mesajlar növbəsinə yerləşdirir və icra edir.
  • sendMessage(Message) mesajı Looper-ın mesajlar növbəsinə göndərir.

Alternativ: handleMessage ilə anonim Handler sinfi

Handler-in anonim sinifində handleMessage metodunu üst-üstə yaza bilərsiniz, bu da mesajların işlənməsinə imkan verir.

// Əsas və ya başqa bir axında, əsas axın üçün Handler yaratmaq
val myHandler = object : Handler(Looper.getMainLooper()) {
    override fun handleMessage(msg: Message) {
        // Mesaj alındıqda əsas axında işləyəcək kod
        when (msg.what) {
            1 -> {
                val data = msg.obj as String
                // Məlumatların işlənməsi
            }
        }
    }
}

// Başqa axından mesaj göndərmək
Thread {
    val message = Message.obtain().apply {
        what = 1
        obj = "world"
    }
    myHandler.sendMessage(message)
}.start()

Bu halda, mesaj alındıqda handleMessage metodu əsas axında çağrılır.