Sobes.tech
Junior

Ինչ է Handler-ը Android-ում?

sobes.tech AI

Պատասխան AI-ից

Handler - դա մեխանիզմ է Message և Runnable օբյեկտների ուղարկման և մշակման համար այն հոսքից, որը ստեղծում է Handler, մյուս հոսքին (կամ նույնին):

Այն թույլ է տալիս ծրագրել կոդի կատարմանը որոշակի հոսքում, նույնիսկ եթե դուք գտնվում եք այլ հոսքում: Handler կապված է Looper-ի հետ, որը մշակում է հաղորդագրությունների հերթականությունը հոսքում:

Հիմնական բաղադրիչներ՝

  • Handler: Ուղարկում է հաղորդագրություններ և առաջադրանքներ, և մշակում դրանք կապված հոսքում:
  • Looper: Սկսում է հաղորդագրությունների հերթականության մշակման ցիկլը որոշ հոսքի համար: Յուրաքանչյուր հոսք կարող է ունենալ միայն մեկ Looper, բայց ոչ բոլոր հոսքերը ունեն դա ըստ default (օրինակ՝ գլխավոր հոսքը ունի):
  • MessageQueue: Հաղորդագրությունների հերթականությունը, կապված Looper-ի հետ:
  • Message/Runnable: Օբյեկտներ, որոնք ուղարկվում են Handler-ի միջոցով կատարման համար:

Հայտված կիրառություններ՝

  • UI թարմացում ոչ-UI հոսքից:
  • Թվային առաջադրանքների պլանավորում հետաձգմամբ կամ որոշ ժամանակում:
  • Հաղորդագրությունների ուղարկում հոսքերի միջև:
// Օրինակ `Handler`-ի օգտագործում UI թարմացման համար ֆոնային հոսքից
Handler mainHandler = new Handler(Looper.getMainLooper()); // Գլխավոր հոսքի Handler- ը ստանում ենք

new Thread(() -> {
    // Կատարում ենք երկարատև գործողություն ֆոնային հոսքում
    String result = doBackgroundWork();

    // Արդյունքը ուղարկում ենք գլխավոր հոսք UI թարմացման համար
    mainHandler.post(() -> {
        // Այս կոդը կիրականացվի գլխավոր հոսքում
        updateTextView(result);
    });
}).start();

private String doBackgroundWork() {
    // Երկար աշխատանք սիմուլացնում է
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "Աշխատանքի արդյունք ֆոնում";
}

private void updateTextView(String text) {
    // UI տարրն է թարմացվում
    // someTextView.setText(text);
}