Можно ли внутри LaunchedEffect вызвать suspend функции

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

Ответ

Да, можно. LaunchedEffect сам является suspend-контекстом, поэтому внутри него можно вызывать любые suspend-функции. Это основное предназначение LaunchedEffect - запускать корутины и выполнять suspend-операции в рамках Composable-функции.

Пример:

LaunchedEffect(key1 = Unit) {
    val data = fetchData() // suspend функция
    processData(data) // другая suspend функция
}

Важные моменты:

  1. LaunchedEffect автоматически отменяет свою корутину при выходе из Composition
  2. Для перезапуска эффекта используйте ключи в параметрах
  3. Не забывайте обрабатывать исключения внутри блока