Sobes.tech
Junior — Middle

Kaip galima perjungti korutinų vykdymą vieno srauto ribose?

sobes.tech AI

Atsakymas iš AI

Kotlin'e korutinai gali būti perjungti viename sraute naudojant įvairius dispatcher'ius ir funkcijas:

  • withContext(Dispatchers.Main) — perjungimas į pagrindinį (UI) srautą.
  • withContext(Dispatchers.Default) — perjungimas į siūlų baseiną CPU intensyviems užduotims.
  • withContext(Dispatchers.IO) — perjungimas į siūlų baseiną įvesties/išvesties operacijoms.

Be to, galima naudoti yield() savanoriškai perduoti valdymą kitai korutinai esant tame pačiame sraute.

Pavyzdys konteksto perjungimo:

launch {
    // Darbas pagrindiniame sraute
    withContext(Dispatchers.IO) {
        // Vykdyti įvesties/išvesties operaciją
    }
    // Grįžti į pagrindinį srautą
}