Можно ли из кода понять что произошла рекомпозиция

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

Ответ

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

Пример:

var counter by remember { mutableStateOf(0) }

LaunchedEffect(Unit) {
    println("Recomposition happened!")
}

Button(onClick = { counter++ }) {
    Text("Clicked $counter times")
}

При каждом клике будет происходить рекомпозиция, и LaunchedEffect сработает, так как его ключ (Unit) изменится. Однако для точного отслеживания рекомпозиций лучше использовать инструменты вроде Layout Inspector или Recomposition Counts в Android Studio.