0Pricing
Android Academy · Урок

Основы корутин и области видимости

Запускайте корутины в правильной области видимости

«Основы корутин и области видимости» — бесплатный урок Android Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Android Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Android Academy содержит 4 уроков всего.

Что такое сопрограммы

Сопрограммы позволяют писать асинхронный неблокирующий код в последовательном стиле. В Kotlin это решение для задач вроде сетевого ввода-вывода и работы с базой данных, пришедшее на смену обратным вызовам и потокам.

Функции suspend

Функция, помеченная как suspend, может приостановиться, не блокируя поток, и продолжить работу позже. Вызывать её можно только из сопрограммы или другой suspend-функции.

suspend fun fetchUser(): User {
    delay(1000) // non-blocking pause
    return User(1, "Ada", "ada@x.com")
}

Приостановка и блокировка

delay приостанавливает сопрограмму, но освобождает поток для другой работы. Thread.sleep блокирует весь поток. Сопрограммы используют приостановку, чтобы сохранять эффективность.

Запуск сопрограммы

Запустите сопрограмму с помощью launch в CoroutineScope. Она выполняется параллельно и не возвращает результат.

scope.launch {
    val user = fetchUser()
    println(user.name)
}

Получение результата с помощью async

Используйте async, когда нужно получить значение. Он возвращает объект Deferred, для которого вызывается await.

val deferred = scope.async { fetchUser() }
val user = deferred.await()

Что такое CoroutineScope

Область определяет время жизни запущенных в ней сопрограмм. При отмене области отменяются все её сопрограммы. Это и есть структурированная конкурентность.

Структурированная конкурентность

Поскольку сопрограммы существуют внутри области, они случайно не могут пережить её. Это предотвращает утечки: когда экран закрывается, его область отменяется, и выполняемая работа прекращается.

Отмена

При отмене области или задания в следующей точке приостановки возникает CancellationException, что корректно останавливает сопрограмму.

val job = scope.launch { /* work */ }
job.cancel() // stops it cooperatively

Кооперативная отмена

Сопрограммы должны сотрудничать: длительные циклы, нагружающие CPU, должны проверять isActive или вызывать suspend-функцию, чтобы отмена могла вступить в силу.

while (isActive) {
    // do a chunk of work
}

Исключения в сопрограммах

Необработанное исключение в launch передаётся области и отменяет соседние сопрограммы (если не используется SupervisorJob). Обрабатывайте ошибки с помощью try/catch или CoroutineExceptionHandler.

Зачем нужны области в Android

Android предоставляет готовые области, связанные с жизненными циклами компонентов, — например, viewModelScope и lifecycleScope, — поэтому ваши сопрограммы автоматически отменяются в нужный момент. Об этом будет следующий урок.

Быстрая проверка

Проверьте своё понимание областей сопрограмм.

Повторение

Вы научились:

  • Функции suspend приостанавливаются, не блокируя поток.
  • launch запускает работу без ожидания результата; async возвращает результат.
  • CoroutineScope ограничивает время жизни сопрограмм (структурированная конкурентность).
  • Отмена выполняется кооперативно.

Часто задаваемые вопросы

Урок «Основы корутин и области видимости» бесплатный?

Да — полный текст урока «Основы корутин и области видимости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.

Чему я научусь в уроке «Основы корутин и области видимости»?

Запускайте корутины в правильной области видимости Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Android Academy?

Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Основы корутин и области видимости»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Android Academy?

Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы корутин и области видимости
  2. viewModelScope и диспетчеры
  3. Основы Kotlin Flow
  4. StateFlow и SharedFlow
← Назад к Android Academy