Ответ
В Jetpack Compose есть несколько нестабильных типов, которые могут вызывать лишние рекомпозиции:
- Интерфейсы – Compose не может отслеживать изменения внутри интерфейсов:
interface User { val name: String }
- Классы с открытыми (
open) свойствами – если класс не помечен как@Immutableили@Stable:
open class User(val name: String)
- Коллекции (
List,Map,Setи т.д.) – если не помечены как@Immutable:
val users: List<User> = mutableListOf()
- Функциональные типы (лямбды) – если параметры/возвращаемые значения нестабильны:
val onClick: () -> Unit
Для оптимизации используйте @Immutable (если состояние никогда не меняется) или @Stable (если изменения редки и Compose может отслеживать их эффективно).