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 арқылы өңделеді.
Қалай жұмыс істейді:
- Handler өңделетін ағында (мысалы, UI ағынында) құрылады.
- Бұл Handler сол ағынның Looper және MessageQueue-мен байланысқан.
- Басқа ағыннан (мысалы, фондық) MessageQueue-ға хабарламалар немесе Runnable-ларды Handler әдістері арқылы жібере аласыз (мысалы,
postнемесеsendMessage). - Looper MessageQueue-дан тапсырмаларды шығарады.
- 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-мен байланысты операциялардың көпшілігі тек негізгі ағында орындалуы керек.