tgoop.com/kotlin_broadcast/1655
Create:
Last Update:
Last Update:
Не стоит использовать CoroutineScope, отвязанный от приложения
Порой в коде встречается ситуация, когда для запуска корутины в репозитории или каком-либо менеджере разработчики создают CoroutineScope:
class MyRepository(...) {
private val scope = CoroutineScope()
fun doWork(...) {
scope.launch { /* длительная работа */ }
}
}
Но есть вариант хуже:
class MyRepository(...) {
fun doWork(...) {
CoroutineScope(...).launch { /* длительная работа */ }
}
}
CoroutineScope
следует добавить Job (или SupervisorJob), а также CoroutineDispatcher
, который будет использоваться по умолчанию.Создать дочерний Scope можно следующим образом:
fun CoroutineScope.childScope(
context: CoroutineContext = EmptyCoroutineContext
): CoroutineScope {
return CoroutineScope(
coroutineContext
+ SupervisorJob(parent = coroutineContext[Job])
+ context
)
}
GlobalScope
. Что можете посоветовать вы авторам подобного кода, помимо почитать документацию и курсы? Пишите в комментариях.
#kotlin #coroutines