Junior — Middle
Milyen módszerekkel lehet váltani a korutinok végrehajtását egy szálon belül?
sobes.tech MI
Válasz az MI-től
Kotlinban a korutinokat ugyanazon a szálon belül különböző dispatcher-ek és funkciók segítségével lehet váltogatni:
- withContext(Dispatchers.Main) — váltás a fő (UI) szálra.
- withContext(Dispatchers.Default) — váltás egy szálmedencére CPU-intenzív feladatokhoz.
- withContext(Dispatchers.IO) — váltás egy szálmedencére bemenet/kimenet műveletekhez.
Ezenkívül használható a yield() a kontroll önkéntes átadására egy másik korutin számára ugyanazon a szálon belül.
Példa a kontextus váltására:
launch {
// Munka a fő szálon
withContext(Dispatchers.IO) {
// Bemenet/kimenet művelet végrehajtása
}
// Visszatérés a fő szálra
}