Можно ли в run-time понять что произошла рекомпозиция

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

Ответ

Да, можно. Для этого можно использовать SideEffect или DisposableEffect с логированием. Например:

@Composable
fun MyComposable() {
    var count by remember { mutableStateOf(0) }

    SideEffect {
        println("Recomposed! Count: $count")
    }

    Button(onClick = { count++ }) {
        Text("Increment")
    }
}

При каждом клике будет происходить рекомпозиция, и SideEffect выполнится, выводя сообщение в лог.

Также можно использовать LaunchedEffect с ключом, который меняется при рекомпозиции, или отслеживать изменения через snapshotFlow.

Важно: это только для дебага, в продакшн-коде так делать не стоит.