Jetpack Compose: что означает операция «вход» или «выход»
Откуда: https://developer.android.com/jetpack/compose/side-effects
«Чтобы безопасно вызывать функции приостановки изнутри компонуемого объекта, используйте компонуемый объект LaunchedEffect. Когда LaunchedEffect входит в композицию, он запускает сопрограмму с блоком кода, переданным в качестве параметра. Сопрограмма будет отменена, если LaunchedEffect покинет композицию. Если LaunchedEffect равен перекомпонован с другими ключами (см. раздел «Эффекты перезапуска» ниже), существующая сопрограмма будет отменена, а новая функция приостановки будет запущена в новой сопрограмме».
Что означает, что «LaunchedEffect» «входит» в композицию? Что означает в контексте «дерева композиции»? Или оставить это?
Кроме того, говорит ли это о том, что если ключ будет изменен к моменту следующей рекомпозиции, операция не будет запущена второй раз?
Пример:
@Compose
fun SomeThingFun() {
var launchedEffectKey = remember { mutableState(false) }
LaunchedEffect(launchedEffectKey) {
//do something fun
launchedEffectKey.value = true
}
}
Означает ли это, что при перекомпоновке SomeThingFun после изменения значения launchedEffectKey LaunchedEffect не будет запускаться во второй раз?