Sobes.tech
Junior

Mis on Handler Androidis?

sobes.tech AI

Vastus AI-lt

Android Handler on mehhanism, mis võimaldab suhelda niitide vahel. See võimaldab saata ja töödelda Message ja Runnable ühest niidist teise sõnumijärjekorda (MessageQueue) teise niidi (tavaliselt UI-niit).

Peamised komponendid:

  • Handler: Objekt, mis on seotud konkreetse niidi ja selle MessageQueue-ga. See saadab sõnumeid ja Runnable-e järjekorda ning töötab neid ka, tõmmates neid järjekorrast.
  • Looper: Objekt, mis on seotud niidiga. See "käivitab" niidi, pidevalt tõmmates ülesandeid (Message või Runnable) MessageQueue-st ja edastades need vastavale Handlerile töötlemiseks.
  • MessageQueue: Ülesannete (Message või Runnable) järjekord, mis ootab Looperi töötlemist.

Kuidas see töötab:

  1. Handler luuakse niidis, mis töötleb sõnumeid (näiteks UI-niidis).
  2. See Handler on seotud selle niidi Looperi ja MessageQueue-ga.
  3. Teisest niidist (näiteks taust) saab saata sõnumeid või Runnable-e MessageQueue-sse Handleri meetodite kaudu (näiteks post või sendMessage).
  4. Looper tõmbab ülesandeid MessageQueue-st.
  5. Looper edastab iga ülesande vastavale Handlerile töötlemiseks.

Näide UI uuendamiseks taustniidist:

// Handleri loomine UI-niidis
Handler uiHandler = new Handler(Looper.getMainLooper());

// Taustniidis:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Pikaajalise operatsiooni teostamine...

        // UI uuendamine Handleri kaudu
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Siin on kood, mis uuendab UI-d ohutult
                textView.setText("Operatsioon lõpetatud!");
            }
        });
    }
}).start();

Handlerit kasutatakse ohutuks toimingute teostamiseks kindlas niidis (enamasti UI) ilma peamise niidi blokeerimiseta. See on vajalik, sest enamik UI operatsioone peaks toimuma ainult peamise niidi kontekstis.