Sobes.tech
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
}