Middle
Handler və Looper istifadə edərək əsas axında mesajlar necə əldə edilir?
sobes.tech Süni İntellekt
AI-dan cavab
Handleryaradın: Onu əsas axınLooperilə əlaqələndirin.Runnablevə yaMessagegöndərin:Handlervasitə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əliLooper-ı əldə edir.Handler(Looper.getMainLooper())mesajları işləyənHandleryaradır, bu mesajlar əsas axında işlənir.post(Runnable)Runnable-ıLooper-ı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.