Ответ
LaunchedEffect перезапускается в двух случаях:
- Изменение ключа (первого параметра). При изменении ключа предыдущий эффект отменяется и запускается новый:
LaunchedEffect(key) { // перезапустится при изменении key
// эффект
}
- Изменение Composition. Если композиция перезапускается (например, при повороте экрана или изменении конфигурации), эффект также перезапускается.
Для предотвращения перезапуска используйте rememberUpdatedState или константные ключи. Если нужно выполнить эффект только один раз - передайте Unit или другую константу в качестве ключа.