Junior
Android-də Handler nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Android-də Handler, iş parçaları arasında qarşılıqlı əlaqə üçün mexanizmdir. O, Message və Runnable obyektlərini bir iş parçacığından digərinin MessageQueue-ya (Xəbərlər Növbəsi) göndərməyə və işləməyə imkan verir.
Əsas komponentlər:
- Handler: Müəyyən bir iş parçacığı və onun MessageQueue ilə əlaqəli obyekt. O, mesajlar və Runnable göndərir və onları çıxararaq işləyir.
- Looper: İş parçacığı ilə bağlı obyekt. O, iş parçacığını "başladır" və davamlı olaraq MessageQueue-dən tapşırıqları (Message və ya Runnable) çıxarır və uyğun Handler-ə ötürür.
- MessageQueue: Looper tərəfindən işlənmək üçün gözləyən tapşırıqlar (Message və ya Runnable) növbəsi.
Necə işləyir:
- Handler, mesajları işləyəcək iş parçacığında yaradılır (məsələn, UI iş parçacığı).
- Bu Handler, həmin iş parçacığının Looper və MessageQueue ilə əlaqəlidir.
- Digər bir iş parçacığından (məsələn, fon rejimində) mesajlar və ya Runnable-lar Handler metodları vasitəsilə MessageQueue-ya göndərilə bilər (
postvə yasendMessage). - Qəbul edən iş parçacığının Looper, MessageQueue-dən tapşırıqları çıxarır.
- Looper, hər tapşırığı uyğun Handler-ə ötürür və işləyir.
Fon iş parçacığından UI-ni yeniləmək üçün nümunə:
// UI iş parçacığında Handler yaradın
Handler uiHandler = new Handler(Looper.getMainLooper());
// Fon iş parçacığında:
new Thread(new Runnable() {
@Override
public void run() {
// Uzun müddətli əməliyyatı yerinə yetirin...
// Handler vasitəsilə UI-ni yeniləyin
uiHandler.post(new Runnable() {
@Override
public void run() {
// UI-ni təhlükəsiz şəkildə yeniləyən kod
textView.setText("Əməliyyat tamamlandı!");
}
});
}
}).start();
Handler, müəyyən bir iş parçacığında (əksər hallarda UI) təhlükəsiz əməliyyatlar həyata keçirmək üçün istifadə olunur və əsas iş parçacığını bloklamır. Bu, UI ilə əlaqəli əməliyyatların yalnız əsas iş parçacığında həyata keçirilməli olduğu üçün vacibdir.