Sobes.tech
Junior

Android-ში Handler რა არის?

sobes.tech AI

პასუხი AI-სგან

Android-да Handler — бұл ағындар арасындағы өзара әрекеттесу механизмі. Ол Message және Runnable объектілерін бір ағыннан екінші ағынның MessageQueue-не (әдетте UI ағыны) жіберуге және өңдеуге мүмкіндік береді.

Негізгі компоненттері:

  • Handler: Бұл нақты ағынмен және оның MessageQueue-мен байланысты объект. Ол хабарламалар мен Runnable-ларды кезекке жібереді және оларды өңдейді, кезектен шығарады.
  • Looper: Бұл ағынға байланған объект. Ол ағынды "іске қосады", үздіксіз MessageQueue-дан тапсырмаларды (Message немесе Runnable) шығарып, оларды тиісті Handler-ға өңдеу үшін жібереді.
  • MessageQueue: Тапсырмалар (Message немесе Runnable) кезегі, олар Looper арқылы өңделеді.

Қалай жұмыс істейді:

  1. Handler өңделетін ағында (мысалы, UI ағынында) құрылады.
  2. Бұл Handler сол ағынның Looper және MessageQueue-мен байланысқан.
  3. Басқа ағыннан (мысалы, фондық) MessageQueue-ға хабарламалар немесе Runnable-ларды Handler әдістері арқылы жібере аласыз (мысалы, post немесе sendMessage).
  4. Looper MessageQueue-дан тапсырмаларды шығарады.
  5. Looper әр тапсырманы тиісті Handler-ға жібереді өңдеу үшін.

Фондық ағыннан UI-ды жаңарту мысалы:

// UI ағынында Handler құру
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-мен байланысты операциялардың көпшілігі тек негізгі ағында орындалуы керек.