Sobes.tech
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-ի մշակմանը:

Ինչպես է դա աշխատում:

  1. Handler-ը ստեղծվում է այն շղթայում, որը կվերամշակի հաղորդագրությունները (օրինակ՝ UI շղթայում):
  2. Այս Handler-ը կապված է այդ շղթայի Looper-ի և նրա MessageQueue-ի հետ:
  3. Մյուս շղթայից (օրինակ՝ ֆոնային) կարող եք ուղարկել հաղորդագրություններ կամ Runnable-ներ MessageQueue-ին Handler-ի մեթոդների միջոցով (օրինակ՝ post կամ sendMessage):
  4. Looper-ը քաշում է Tasks-ը MessageQueue-ից:
  5. 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- ի գործողությունները պետք է կատարվեն միայն գլխավոր շղթայում։