Я пишу пример приложения, используя Kotlin Coroutines. Вот простая функция, которую я использовал
fun calculateData(data: Person) {
println("Calling calculateData()...")
launch {
withContext(Dispatchers.IO) {
println("Obtained data is $data")
if (person.age > 18) {
//do some long running calculations based on 'data'
}
}
println("Some meaningful message")
}
}
Код компилируется и работает нормально. Однако я не получаю аргумент данных внутри сопрограммы. Я также не могу отлаживать блок withContext. Сообщение «Полученные данные равны $данным» никогда не отображается.
Любая подсказка о том, что мешает мне получить доступ к этому аргументу из Coroutine?
Это объект данных типа Person, обычный класс сущностей. Я изменил фрагмент, чтобы лучше понять.
Вы уверены, что звоните calculateData() по адресу? отображается "Some meaningful message"? Попробуйте установить журналы перед функцией launch и проверьте, вызывается ли calculateData() вообще
Да, отображается сообщение "Calling calculateData()..."
Не могли бы вы обновить вопрос с помощью кода для области сопрограммы, которую вы используете для запуска сопрограммы.
Точно! Я использовал другой контекст, который был проблемой. Большое спасибо!
Не могли бы вы дать ответ и на свой вопрос? Это может помочь другим позже.





У вас должен быть доступ к объекту
dataв сопрограмме. Что этоdata: <ClassA> type? он не компилируется. Что вы имеете в виду подI don't get the data argument inside the Coroutine? Можете ли вы положить туда логи и вывестиdataв консоль?