Какие знаешь нестабильные типы в Jetpack Compose

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

Ответ

В Jetpack Compose есть несколько нестабильных типов, которые могут вызывать лишние рекомпозиции:

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

Для оптимизации используйте @Immutable (если состояние никогда не меняется) или @Stable (если изменения редки и Compose может отслеживать их эффективно).