Junior
Ինչ է Handler-ը Android-ում?
sobes.tech AI
Պատասխան AI-ից
Android- ում Handler-ը մեխանիզմ է շղթաների միջև փոխազդեցության համար: Այն թույլ է տալիս ուղարկել և մշակել Message և Runnable մեկ շղթայից մյուսի MessageQueue-ին (հաղորդագրությունների հերթին):
Հիմնական կոմպոնենտները՝
- Handler: Օբյեկտ, որը կապված է կոնկրետ շղթայի և նրա MessageQueue-ի հետ: Այն ուղարկում և մշակում է հաղորդագրություններ և Runnable-ներ, ինչպես նաև դրանք քաշում է հերթից:
- Looper: Օբյեկտ, որը կապված է շղթայի հետ: Այն "սկսում" է շղթան՝ մշտապես քաշելով Tasks (Message կամ Runnable) MessageQueue-ից և փոխանցելով դրանք համապատասխան Handler-ին մշակելու համար:
- MessageQueue: Tasks (Message կամ Runnable) հերթ, որոնք սպասում են Looper-ի մշակմանը:
Ինչպես է դա աշխատում:
- Handler-ը ստեղծվում է այն շղթայում, որը կվերամշակի հաղորդագրությունները (օրինակ՝ UI շղթայում):
- Այս Handler-ը կապված է այդ շղթայի Looper-ի և նրա MessageQueue-ի հետ:
- Մյուս շղթայից (օրինակ՝ ֆոնային) կարող եք ուղարկել հաղորդագրություններ կամ Runnable-ներ MessageQueue-ին Handler-ի մեթոդների միջոցով (օրինակ՝
postկամsendMessage): - Looper-ը քաշում է Tasks-ը MessageQueue-ից:
- Looper-ը փոխանցում է յուրաքանչյուր Task համապատասխան Handler-ին մշակելու համար:
Օրինակ՝ UI- ի թարմացման համար ֆոնային շղթայից:
// Handler ստեղծում UI շղթայում
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- ի գործողությունները պետք է կատարվեն միայն գլխավոր շղթայում։