Junior
Šta je Handler u Androidu?
sobes.tech АИ
Одговор од АИ
Handler u Androidu je mehanizam za komunikaciju između niti. Omogućava slanje i obradu Message i Runnable iz jedne niti u red poruka (MessageQueue) druge niti (obično UI niti).
Glavne komponente:
- Handler: Objekat povezan sa određenom niti i njenom MessageQueue. Šalje poruke i Runnable u red i obrađuje ih izvlačenjem.
- Looper: Objekat povezan sa nitima. "Pokreće" nit, stalno izvlačeći zadatke (Message ili Runnable) iz MessageQueue i prosleđujući ih odgovarajućem Handleru na obradu.
- MessageQueue: Red zadataka (Message ili Runnable) koji čekaju na obradu od strane Looper-a.
Kako funkcioniše:
- Handler se kreira u niti koja će obrađivati poruke (npr. UI nit).
- Ovaj Handler je povezan sa Looper-om te niti i njenom MessageQueue.
- Iz druge niti (npr. u pozadini) mogu se slati poruke ili Runnable u MessageQueue putem metoda Handler-a (npr.,
postilisendMessage). - Looper primajuće niti izvlači zadatke iz MessageQueue.
- Looper prosleđuje svaki zadatak odgovarajućem Handleru na obradu.
Primer upotrebe za ažuriranje UI iz pozadinskog niti:
// Kreiranje Handler-a u UI niti
Handler uiHandler = new Handler(Looper.getMainLooper());
// U pozadinskoj niti:
new Thread(new Runnable() {
@Override
public void run() {
// Izvršavanje dugotrajne operacije...
// Ažuriranje UI putem Handler-a
uiHandler.post(new Runnable() {
@Override
public void run() {
// Kod koji sigurno ažurira UI
textView.setText("Operacija završena!");
}
});
}
}).start();
Handler se koristi za sigurno izvršavanje operacija u određenoj niti (češće UI) bez blokiranja glavne niti. Ovo je neophodno jer većina operacija sa UI-jem treba da se izvršava samo u glavnoj niti.