Где хранится State при передаче между suspend функциями

«Где хранится State при передаче между suspend функциями» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

State в suspend-функциях хранится в объекте Continuation, который создается при вызове корутины. Continuation содержит:

  1. Локальные переменные и параметры функции
  2. Точку приостановки (label)
  3. Результат предыдущих вычислений

Пример:

suspend fun fetchData(): String {
    val result = apiCall() // приостановка
    return process(result) // продолжение
}

При приостановке все состояние сохраняется в Continuation, а при возобновлении - восстанавливается. Continuation передается между suspend-функциями через цепочку вызовов.