Шаг 266.
Основы Kotlin.
Знакомство с сопрограммами. Функция приостановки

    На этом шаге мы рассмотрим назначение этой функции.

    Обратите внимание на значок "перечеркнутая стрелка" (рисунок 1) в Android Studio рядом с вызовом функции await().


Рис.1. Значок рядом с вызовом функции await() (MainActivity.kt)

    IDE показывает, что в этой строке производится вызов приостанавливаемой функции. Что это значит?

    Про сопрограммы говорят, что они приостанавливаются, а про традиционный поток - что он "блокируется". Разница в терминологии подсказывает, почему сопрограммы обеспечивают лучшую производительность, чем потоки: заблокированный поток не может выполнять другую работу, пока не разблокируется. Сопрограмма запускается в потоке - например, в UI-потоке Android или в потоке из пула, но не блокирует его. Поток, выполняющий приостанавливаемую функцию, может выполнять другие сопрограммы. Вот почему сопрограмма обеспечивает более высокую производительность.

    Объявления приостанавливаемых функций отмечаются ключевым словом suspend. Вот сигнатура функции await():

  public suspend fun await(): T

    Вы завершили приложение Samodelkin и узнали, что главный поток Android зарезервирован для обработки событий UI. Вы также рассмотрели основы применения сопрограмм для выполнения работы в фоновом режиме без блокировки основного потока.

    На следующем шаге мы рассмотрим несколько заданий для самостоятельного решения.




Предыдущий шаг Содержание Следующий шаг