Что отличает LaunchedEffect от rememberCoroutineScope в контексте управления корутинами в Jetpack Compose?
Ответ от нейросети
sobes.tech AI
LaunchedEffect и rememberCoroutineScope — это два разных способа управления корутинами в Jetpack Compose, отличающиеся по жизненному циклу и контексту запуска.
-
LaunchedEffect запускает корутину, привязанную к жизненному циклу конкретного эффекта в Compose. Она автоматически отменяется, когда ключи эффекта изменяются или когда Composable покидает композицию. Это удобно для запуска одноразовых или реактивных задач, завязанных на состояние.
-
rememberCoroutineScope возвращает
CoroutineScope, связанный с жизненным циклом Composable, который можно использовать для запуска корутин вручную, например, в обработчиках событий. Корутины, запущенные в этом скоупе, отменяются при уничтожении Composable.
Пример использования:
@Composable
fun Example() {
val scope = rememberCoroutineScope()
Button(onClick = {
scope.launch {
// Асинхронная операция по клику
}
}) {
Text("Click me")
}
LaunchedEffect(Unit) {
// Запускается один раз при входе в композицию
// Например, загрузка данных
}
}
Таким образом, LaunchedEffect удобен для реактивных и одноразовых эффектов, а rememberCoroutineScope — для запуска корутин по событию внутри Composable.