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:
- Handler luuakse niidis, mis töötleb sõnumeid (näiteks UI-niidis).
- See Handler on seotud selle niidi Looperi ja MessageQueue-ga.
- Teisest niidist (näiteks taust) saab saata sõnumeid või Runnable-e MessageQueue-sse Handleri meetodite kaudu (näiteks
postvõisendMessage). - Looper tõmbab ülesandeid MessageQueue-st.
- 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.