Sobes.tech
Junior

Kas ir Handler Android?

sobes.tech AI

Atbilde no AI

Android Handler ir mekanisms, kas ļauj sadarboties starp pavedieniem. Tas ļauj sūtīt un apstrādāt Message un Runnable no viena pavediena uz citu pavedienu MessageQueue (parasti UI pavedienu).

Galvenās sastāvdaļas:

  • Handler: Objekts, kas ir saistīts ar konkrētu pavedienu un tā MessageQueue. Tas sūta ziņojumus un Runnable uz rindu un arī tos apstrādā, izņemot no rindas.
  • Looper: Objekts, kas ir saistīts ar pavedienu. Tas "sāk" pavedienu, pastāvīgi izņem uzdevumus (Message vai Runnable) no MessageQueue un nodod tos atbilstošajam Handler apstrādei.
  • MessageQueue: Uzdevumu rinda (Message vai Runnable), kas gaida Looper apstrādi.

Kā tas darbojas:

  1. Handler tiek izveidots tajā pavedienā, kas apstrādās ziņojumus (piemēram, UI pavedienā).
  2. Šis Handler ir saistīts ar šī pavediena Looper un MessageQueue.
  3. No cita pavediena (piemēram, fonā) var sūtīt ziņojumus vai Runnable uz MessageQueue caur Handler metodēm (piemēram, post vai sendMessage).
  4. Looper izņem uzdevumus no MessageQueue.
  5. Looper nodod katru uzdevumu atbilstošajam Handler apstrādei.

Piemērs UI atjaunināšanai no fonā:

// Handler izveide UI pavedienā
Handler uiHandler = new Handler(Looper.getMainLooper());

// Fonā:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Ilgstošas operācijas veikšana...

        // UI atjaunināšana caur Handler
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Šeit kods, kas droši atjaunina UI
                textView.setText("Operācija pabeigta!");
            }
        });
    }
}).start();

Handler tiek izmantots drošai operāciju izpildei noteiktā pavedienā (bieži UI) bez galvenā pavediena bloķēšanas. Tas ir nepieciešams, jo lielākā daļa UI operāciju jāveic tikai galvenajā pavedienā.