Я изучаю Android Compose, и я искал/играл с этим кодом от developer.android в github. Проекты — это простое приложение для демонстрации адаптивного экрана. Спортивное приложение
Все работает нормально, но я немного запутался.
Я зарегистрировал элемент/строку в Logcat. И я вижу, что он выполняется дважды? Рекомпозиция? Чем это вызвано?
В вашем коде:
Log.i("info", "xxx")
Column(
modifier = Modifier.padding(4.dp)
) {
Box {
Image(painter = painterResource(R.drawable.xx))
Text()
}
Text(
text = stringResource(R.string.app_name),
)
}
stringResource и painterResource могут вызвать рекомпозицию.
В compose, когда что-то вызывает рекомпозицию, это происходит в ближайшей области видимости.
Однако Box и Column являются встроенными функциями, и это означает, что у обоих нет собственных областей перекомпоновки.
В вашем коде, когда перекомпоновываются Image и Text, все компонуемые перекомпоновываются.
Также зарегистрируйте хэш-код
selectedSport, чтобы увидеть, перекомпонован ли он для того же элемента.