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 тарабынан иштетилет.
Эмне болуп жатат:
- Handler түзүлөт, ал иштетүүчү потокто (мисалы, UI-потокто) түзүлөт.
- Бул Handler ошол потоктун Looper жана MessageQueue менен байланышкан.
- Башка потоктон (мисалы, фондук) MessageQueueга билдирүүлөр же Runnable жиберүүгө болот Handler аркылуу (мисалы,
postжеsendMessage). - Looper MessageQueueдан тапшырмаларды чыгарып жатат.
- 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 менен байланышкан көптөгөн операциялар гана негизги потокто аткарылышы керек.