rememberSaveable при повороте
Сохраняйте состояние при изменениях конфигурации.
«rememberSaveable при повороте» — бесплатный урок Jetpack Compose Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Jetpack Compose Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Jetpack Compose Academy содержит 4 уроков всего.
Проблема поворота экрана
Поверните экран — и счётчик нажатий снова станет равен нулю. Это происходит потому, что изменение конфигурации пересоздаёт весь Activity.
Одного remember недостаточно
remember переживает повторную композицию, но не пересоздание Activity. При перезапуске Activity сохранённое состояние исчезает навсегда.
Что запускает пересоздание
Поворот, смена языка и переключение тёмной темы — это изменения конфигурации. Каждое из них удаляет и заново создаёт интерфейс с нуля.
Познакомьтесь с rememberSaveable
rememberSaveable работает как remember, но также сохраняет значение в сохранённом состоянии экземпляра, поэтому оно переживает пересоздание.
var count by rememberSaveable { mutableStateOf(0) }Просто замените вызов
Часто исправление занимает одну замену: замените remember на rememberSaveable, и после поворота счётчик сохранит значение.
Что можно сохранить
По умолчанию сохраняются типы, помещающиеся в Bundle: Int, String, Boolean и другие простые типы. Большинство простых состояний работает сразу.
var name by rememberSaveable { mutableStateOf("") }Для собственных типов нужен Saver
Для собственных классов передайте rememberSaveable Saver, который объяснит, как сохранить и восстановить объект в виде данных, безопасных для Bundle.
С классами данных проще
Для классов данных Kotlin можно использовать помощники mapSaver или listSaver либо добавить аннотацию Parcelize, чтобы упростить сохранение.
@Parcelize
data class User(val name: String) : ParcelableЭто не навсегда
rememberSaveable переживает поворот и краткий переход в фон, но не полное завершение приложения. Для постоянных данных всё равно нужно хранилище.
Когда его использовать
Используйте rememberSaveable для временного состояния интерфейса, которое нужно сохранить при повороте: например, для счётчика, введённого запроса или индекса вкладки.
remember и Saveable
Практическое правило: используйте remember для дешёвых или вычисляемых заново значений, а rememberSaveable — когда потеря значения при повороте доставила бы пользователю неудобства.
Быстрая проверка
Какой программный интерфейс сохраняет состояние при повороте экрана?
Итоги
Вы узнали, что rememberSaveable сохраняет временное состояние интерфейса при повороте и изменениях конфигурации, а remember — нет. Отлично справились! 🎉
Изучай Kotlin с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «rememberSaveable при повороте» бесплатный?
Да — полный текст урока «rememberSaveable при повороте» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Jetpack Compose Academy, подпишись на CoddyKit PRO. Курс Jetpack Compose Academy содержит 4 уроков всего.
Чему я научусь в уроке «rememberSaveable при повороте»?
Сохраняйте состояние при изменениях конфигурации. Ты практикуешь Jetpack Compose Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Jetpack Compose Academy?
Предыдущий опыт не требуется. Jetpack Compose Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «rememberSaveable при повороте»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Jetpack Compose Academy?
Да. Каждый урок Jetpack Compose Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- remember и mutableStateOf
- Рекомпозиция: что вызывает перерисовку
- Создание счётчика нажатий
- rememberSaveable при повороте