Я просто читаю и изучаю сопрограммы в Котлине, которые можно использовать в небольшой библиотеке для развлечения / обучения.В документации вы можете сделать что-то вроде
GlobalScope.launch {
}
Так что в моем методе
fun myMethod() {
GlobalScope.launch {
// do some networking code
}
}
Лучше ли использовать GlobalScope
для запуска сопрограммы для библиотеки?В документах написано:
Код приложения обычно должен использовать определяемый приложением CoroutineScope, поэтому использование асинхронного запуска или запуска на экземпляре GlobalScope крайне нежелательно.
Это, очевидно,библиотека и не обязательно код приложения.Но я не был уверен, что это лучший способ для создания сетей в фоновом режиме с сопрограммами.
Я также пытался
runBlocking {
async {
// do some networking code
}
}
Думая, что runBlocking
вводит новую область сопрограмм,но я думаю, что в этом случае он наследует область действия от своих родителей, которые являются основным потоком, поэтому я получаю исключение об отсутствии сети в основном потоке пользовательского интерфейса.