Junior — Middle
Jakimi metodami można przełączać wykonywanie korutyn w ramach jednego wątku?
sobes.tech AI
Odpowiedź od AI
W Kotlinie korutyny można przełączać w ramach tego samego wątku za pomocą różnych dispatcherów i funkcji:
- withContext(Dispatchers.Main) — przełączenie na główny (UI) wątek.
- withContext(Dispatchers.Default) — przełączenie na pulę wątków dla zadań intensywnych obliczeniowo.
- withContext(Dispatchers.IO) — przełączenie na pulę wątków dla operacji wejścia/wyjścia.
Ponadto można użyć yield() do dobrowolnego przekazania kontroli innej korutynie w ramach tego samego wątku.
Przykład przełączenia kontekstu:
launch {
// Praca na głównym wątku
withContext(Dispatchers.IO) {
// Wykonanie operacji wejścia/wyjścia
}
// Powrót do głównego wątku
}