В каком потоке запускается LaunchedEffect

«В каком потоке запускается LaunchedEffect» — вопрос из категории Jetpack Compose, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

LaunchedEffect запускается в корутине, привязанной к области видимости (CoroutineScope) композиции. По умолчанию это Dispatchers.Main, так как Compose работает в UI-потоке. Однако внутри блока можно переключать контекст с помощью withContext.

LaunchedEffect(key) {
    // По умолчанию - Main
    withContext(Dispatchers.IO) {
        // Работа в IO-потоке
    }
}

Важно: не выполняйте долгие операции напрямую в LaunchedEffect без смены диспетчера, чтобы не блокировать UI.