Примерно так, да. Потому что, suspend функция является окончанием предыдущего case, и на этом месте работа метода invoke метода завершается, чтобы позже возобновиться в следующем case.
suspend функция должна запустить фоновый поток, в котором будут выполняться операции. А сама она как функция выполнится сразу и после нее будет return.
Правильно ли я понимаю, что в java suspend функция запускается в фоновом потоке и дальше сразу идёт вызов return, не дожидаясь окончания работы suspend функции?
Подробно о suspend функциях я рассказываю в следующих уроках. А дешевизна корутин достигается тем, что для их запуска используется пул потоков, а не отдельный поток на каждую корутину.
Насколько я помню, для этих целей Continuation хранит ссылку на внешний класс, в котором он был создан. Он использует эту ссылку для доступа к полям и методам этого класса, если необходимо.
Да, среди file и size. В фрагменте кода Continuation класса в начале урока я ее показывал. Далее в фрагментах кода я показывал только те переменные, которые нужны для объяснений.
Добрый день! Не совсем понял, зачем мы используем return, когда вызываем return suspendCoroutine, и как он нам возвращает результат, и главное, что он нам возвращает, когда мы ее только запустили - коллбэк ...
Честно говоря мало что понял из сказанного. Может быть я просто всегда использую suspend как функцию возвращающую результат и вообще не использую в коде suspendCoroutine? У нас нет легаси и о его существовании, ...
Ок, попробую перечитать урок и внести правки. По контракту suspend функция не должна блокировать поток корутины в которой она вызывается. Потому что корутина вполне может работать и в Main потоке (случай ...