Sobes.tech
Junior

Androidдеги Handler эмне?

sobes.tech AI

AIден жооп

Androidтогу Handler — бул потоктор ортосунда өз ара аракеттенүүнүн механизми. Ал Message жана Runnable объекттерин бир потоктон экинчи потоктун (адатта UI-потоктун) MessageQueueсына жиберүүгө жана иштетүүгө мүмкүндүк берет.

Негизги компоненттер:

  • Handler: Бул объект конкреттүү поток жана анын MessageQueue менен байланышкан. Ал билдирүүлөрдү жана Runnable-ларды кезекке жиберет жана аларды иштетет, кезектен чыгарып.
  • Looper: Бул объект потокко байланган. Ал потокту "таркатат", үзгүлтүксүз MessageQueueдан тапшырмаларды (Message же Runnable) чыгарып, аларды тиешелүү Handlerга өткөрөт.
  • MessageQueue: Тапшырмалардын (Message же Runnable) кезеги, алар Looper тарабынан иштетилет.

Эмне болуп жатат:

  1. Handler түзүлөт, ал иштетүүчү потокто (мисалы, UI-потокто) түзүлөт.
  2. Бул Handler ошол потоктун Looper жана MessageQueue менен байланышкан.
  3. Башка потоктон (мисалы, фондук) MessageQueueга билдирүүлөр же Runnable жиберүүгө болот Handler аркылуу (мисалы, post же sendMessage).
  4. Looper MessageQueueдан тапшырмаларды чыгарып жатат.
  5. Looper ар бир тапшырманы тиешелүү Handlerга өткөрөт иштетүү үчүн.

Фондук потоктон UI жаңыртуу үчүн мисал:

// UI потокто Handler түзүү
Handler uiHandler = new Handler(Looper.getMainLooper());

// Фондук потокто:
new Thread(new Runnable() {
    @Override
    public void run() {
        // Узак операцияны аткаруу...

        // UI жаңыртуу Handler аркылуу
        uiHandler.post(new Runnable() {
            @Override
            public void run() {
                // Мында UI жаңыртуучу коод жазылат
                textView.setText("Операция аяктады!");
            }
        });
    }
}).start();

Handler белгилүү бир потокто (көбүнчө UI) операцияларды блоктоп койбостон ишке ашыруу үчүн колдонулат. Бул маанилүү, анткени UI менен байланышкан көптөгөн операциялар гана негизги потокто аткарылышы керек.