Ответ
LaunchedEffect и rememberCoroutineScope оба используются для запуска корутин в Compose, но с разными целями:
- LaunchedEffect
Запускает корутину при входе в композицию и отменяет её при выходе. Используется для одноразовых или зависящих от ключей операций (например, анимации, навигации).
LaunchedEffect(key1 = someState) {
// Выполнится при изменении someState
fetchData()
}
- rememberCoroutineScope
ВозвращаетCoroutineScope, привязанный к области композиции. Используется для ручного управления корутинами (например, по клику).
val scope = rememberCoroutineScope()
Button(onClick = {
scope.launch { fetchData() }
})
Ключевое отличие:
LaunchedEffect — автоматический запуск/отмена, rememberCoroutineScope — ручной контроль.