Sobes.tech
Junior — Middle
79

Можешь перечислить различные виды корутин и объяснить их особенности?

Companies where asked
IBS

Answer from AI

sobes.tech AI

В Kotlin для Android существуют разные виды корутин, которые отличаются по контексту и способу запуска:

  • GlobalScope — корутины, живущие столько же, сколько приложение. Использовать осторожно, чтобы избежать утечек памяти.
  • CoroutineScope — область видимости для корутин, обычно связанная с жизненным циклом компонента (например, Activity или ViewModel).
  • launch — запускает корутину, не блокируя текущий поток, возвращает Job.
  • async — запускает корутину и возвращает Deferred, который можно использовать для получения результата с помощью await.

Особенности:

  • Корутины позволяют писать асинхронный код последовательно.
  • Они могут быть отменены, что важно для управления ресурсами.
  • Используют диспетчеры (Dispatchers) для выбора потока выполнения (Main, IO, Default).

Пример:

CoroutineScope(Dispatchers.Main).launch {
    val data = withContext(Dispatchers.IO) {
        // Долгая операция, например, запрос к сети
        fetchData()
    }
    updateUI(data)
}