В чем разница между remember и rememberSavable в Jetpack Compose

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

Ответ

remember сохраняет значение только на время жизни композиции (пока активен Composable). При изменении конфигурации (например, повороте экрана) значение сбрасывается.

rememberSaveable сохраняет значение даже при изменении конфигурации, используя механизмы сохранения состояния (Bundle, Saver). Подходит для сохранения UI-состояния.

var counter1 by remember { mutableStateOf(0) } // Сбросится при повороте
var counter2 by rememberSaveable { mutableStateOf(0) } // Сохранится

Ключевые отличия:

  1. rememberSaveable переживает изменения конфигурации
  2. Для сложных объектов в rememberSaveable нужно реализовать Saver
  3. remember легковеснее, но менее устойчив