Сохраненное состояние

Напишите подключаемые компоненты, которые сохраняют состояние пользовательского интерфейса при завершении процесса и восстанавливают его при перезапуске процесса.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
16 октября 2024 г. 1.2.1 - - 1.3.0-альфа03

Объявление зависимостей

Чтобы добавить зависимость от SavedState, необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл build.gradle для вашего приложения или модуля:

классный

dependencies {
    // Java language implementation
    implementation "androidx.savedstate:savedstate:1.2.1"

    // Kotlin
    implementation "androidx.savedstate:savedstate-ktx:1.2.1"
}

Котлин

dependencies {
    // Java language implementation
    implementation("androidx.savedstate:savedstate:1.2.1")

    // Kotlin
    implementation("androidx.savedstate:savedstate-ktx:1.2.1")
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию см . в документации по системе отслеживания проблем .

Версия 1.3

Версия 1.3.0-альфа03

16 октября 2024 г.

androidx.savedstate:savedstate-*:1.3.0-alpha03 выпущен без заметных изменений. Версия 1.3.0-alpha03 содержит эти коммиты .

Версия 1.3.0-альфа02

2 октября 2024 г.

androidx.savedstate:savedstate-*:1.3.0-alpha02 выпущен. Версия 1.3.0-alpha02 содержит эти коммиты .

Котлин Мультиплатформа

  • Модуль SavedState теперь совместим с KMP. Поддерживаемые платформы теперь включают среды рабочего стола Android, iOS, Linux, Mac и JVM. ( I26305 , б/334076622 )

Новые возможности

  • Представьте непрозрачный тип SavedState как абстракцию, чтобы обеспечить согласованный способ сохранения и восстановления состояния приложения в KMP. Он включает в себя SavedStateReader и SavedStateWriter для изменения сохраняемого состояния. В Android SavedState — это псевдоним типа Bundle , обеспечивающий двоичную совместимость и упрощающий миграцию существующих API в общий набор исходного кода. На других платформах SavedState представляет собой экземпляр Map<String, Any> . ( I18575 , б/334076622 )
  // Create a new SavedState object using the savedState DSL:
  val savedState = savedState {
    putInt("currentPage", 1)
    putString("filter", "favorites")
  }

  // Read from a SavedState object
  val currentPage = savedState.read { getInt("currentPage") }

  // Edit an existing SavedState object
  savedState.write {
    remove("currentPage")
  }

Изменения API

  • SavedStateRegistry и SavedStateRegistryController теперь совместимы с KMP. ( Id7bb8 , б/334076622 )
  • SavedState , SavedStateWriter и SavedStateReader теперь совместимы с KMP. ( I26305 , б/334076622 )

Версия 1.3.0-альфа01

7 августа 2024 г.

Выпущены androidx.savedstate:savedstate:1.3.0-alpha01 и androidx.savedstate:savedstate-ktx:1.3.0-alpha01 . Версия 1.3.0-alpha01 содержит эти коммиты .

Изменения API

  • Расширения savedstate-ktx Kotlin теперь перемещены в базовый модуль savestate. ( I1cc18 , б/274803094 )

Примечание

  • Обновите compileSdk до 35 ( 5dc41be )

Версия 1.2.1

Версия 1.2.1

22 марта 2023 г.

androidx.savedstate:savedstate:1.2.1 и androidx.savedstate:savedstate-ktx:1.2.1 выпущены. Версия 1.2.1 содержит эти коммиты.

Обновления зависимостей

Версия 1.2.0

Версия 1.2.0

29 июня 2022 г.

androidx.savedstate:savedstate:1.2.0 и androidx.savedstate:savedstate-ktx:1.2.0 выпущены. Версия 1.2.0 содержит эти коммиты.

Важные изменения с версии 1.1.0

  • SavedStateRegistryController теперь позволяет раннее присоединение SavedStateRegistry с помощью performAttach() .
  • Теперь вы можете получить ранее зарегистрированный SavedStateProvider из SavedStateRegistry с помощью getSavedStateProvider() .
  • Библиотека SavedState переписана на Kotlin.
    • Для SavedStateRegistryOwner это изменение, несовместимое с исходным кодом для классов, написанных на Kotlin — теперь вам необходимо переопределить свойство savedStateRegistry , а не реализовывать предыдущую функцию getSavedStateRegistry() .
    • Для ViewTreeSavedStateRegistryOwner это изменение, несовместимое с исходным кодом для этих классов, написанных на Kotlin — теперь вы должны напрямую импортировать и использовать методы расширения Kotlin в View androidx.savedstate.setViewTreeSavedStateRegistryOwner и androidx.savedstate.findViewTreeSavedStateRegistryOwner чтобы установить и найти ранее установленного владельца. Это заменяет API savedstate-ktx findViewTreeSavedStateRegistryOwner .

Изменения поведения

  • SavedStateRegistry больше не сохраняет пустой пакет, если нет состояния для сохранения.

Версия 1.2.0-rc01

11 мая 2022 г.

androidx.savedstate:savedstate:1.2.0-rc01 и androidx.savedstate:savedstate-ktx:1.2.0-rc01 выпущены. Версия 1.2.0-rc01 содержит эти коммиты.

Изменения в документации

  • Документы SavedStateRegistryOwner были обновлены, чтобы разъяснить обязанности и контракт владельца относительно того, как ему следует реализовывать интерфейс или когда им следует вызывать методы SavedStateRegistryController . ( Iefc95 , б/228887344 )

Версия 1.2.0-бета01

20 апреля 2022 г.

Выпущены androidx.savedstate:savedstate:1.2.0-beta01 и androidx.savedstate:savedstate-ktx:1.2.0-beta01 . Версия 1.2.0-beta01 содержит эти коммиты.

Изменения API

  • Классы SavedStateRegistry и ViewTreeSavedStateRegistryOwner были переписаны на Kotlin. Для ViewTreeSavedStateRegistryOwner это изменение, несовместимое с исходным кодом для этих классов, написанных на Kotlin — теперь вы должны напрямую импортировать и использовать методы расширения Kotlin в View androidx.savedstate.setViewTreeSavedStateRegistryOwner и androidx.savedstate.findViewTreeSavedStateRegistryOwner чтобы установить и найти ранее установленного владельца. Это заменяет API savedstate-ktx findViewTreeSavedStateRegistryOwner . Он совместим на двоичном уровне и остается совместимым с исходным кодом для реализаций, написанных на языке программирования Java. ( б/220191285 )

Версия 1.2.0-альфа02

6 апреля 2022 г.

Выпущены androidx.savedstate:savedstate:1.2.0-alpha02 и androidx.savedstate:savedstate-ktx:1.2.0-alpha02 . Версия 1.2.0-alpha02 содержит эти коммиты.

Новые возможности

  • Теперь вы можете получить ранее зарегистрированный SavedStateProvider из SavedStateRegistry с помощью getSavedStateProvider() . ( I7ea47 , б/215406268 )

Изменения API

  • Классы SavedStateRegistryOwner , SavedStateRegistryController и Recreator были переписаны на Kotlin. Для SavedStateRegistryOwner это изменение, несовместимое с исходным кодом для классов, написанных на Kotlin — теперь вам необходимо переопределить свойство savedStateRegistry , а не реализовывать предыдущую функцию getSavedStateRegistry() . Он совместим на уровне двоичного кода и исходного кода для реализаций, написанных на языке программирования Java. ( б/220191285 )

Версия 1.2.0-альфа01

26 января 2022 г.

Выпущены androidx.savedstate:savedstate:1.2.0-alpha01 и androidx.savedstate:savedstate-ktx:1.2.0-alpha01 . Версия 1.2.0-alpha01 содержит эти коммиты.

Новые возможности

  • SavedStateRegistryController теперь позволяет раннее присоединение SavedStateRegistry с помощью performAttach() . ( Ice4bf )

Изменения поведения

  • SavedStateRegistry больше не сохраняет пустой пакет, если нет состояния для сохранения. ( аосп/1896865 , б/203457956 )

Версия 1.1.0

Версия 1.1.0

10 февраля 2021 г.

androidx.savedstate:savedstate:1.1.0 и androidx.savedstate:savedstate-ktx:1.1.0 выпущены. Версия 1.1.0 содержит эти коммиты.

Основные изменения с версии 1.0.0

  • API ViewTreeSavedStateRegistryOwner : новый API ViewTreeSavedStateRegistryOwner.get(View) позволяет получать содержащийся в нем SavedStateRegistry с учетом экземпляра View . Чтобы правильно заполнить это, вам необходимо обновиться до Activity 1.2.0 , Fragment 1.3.0 и AppCompat 1.3.0-alpha01 или выше.
  • артефакт savedstate-ktx : новый артефакт savedstate-ktx был добавлен вместе с расширением findViewTreeSavedStateRegistryOwner() Kotlin для работы с ViewTreeSavedStateRegistryOwner .

Версия 1.1.0-rc01

16 декабря 2020 г.

androidx.savedstate:savedstate:1.1.0-rc01 и androidx.savedstate:savedstate-ktx:1.1.0-rc01 выпущены без изменений с 1.1.0-beta01 . Версия 1.1.0-rc01 содержит эти коммиты.

Версия 1.1.0-бета01

1 октября 2020 г.

androidx.savedstate:savedstate:1.1.0-beta01 и androidx.savedstate:savedstate-ktx:1.1.0-beta01 выпущены без изменений с 1.1.0-alpha01 . Версия 1.1.0-beta01 содержит эти коммиты.

Версия 1.1.0-альфа01

20 мая 2020 г.

Выпущены androidx.savedstate:savedstate:1.1.0-alpha01 и androidx.savedstate:savedstate-ktx:1.1.0-alpha01 . Версия 1.1.0-alpha01 содержит эти коммиты.

Новые возможности

  • Новый API ViewTreeSavedStateRegistryOwner.get(View) позволяет вам получить содержащий SavedStateRegistry данный экземпляр View . Чтобы правильно заполнить это, вам необходимо обновиться до Activity 1.2.0-alpha05 , Fragment 1.3.0-alpha05 и AppCompat 1.3.0-alpha01 . ( аосп/1298679 )
  • В новый артефакт savedstate-ktx добавлено расширение Kotlin findViewTreeSavedStateRegistryOwner() для работы с ViewTreeSavedStateRegistryOwner . ( аосп/1299434 )

Версия 1.0.0

Версия 1.0.0

5 сентября 2019 г.

androidx.savedstate:savedstate:1.0.0 выпущен. Коммиты, включенные в эту версию, можно найти здесь .

Основные возможности SavedState 1.0.0

androidx.savedstate выпущен в стабильную версию. Это набор API, которые позволяют разработчикам подключать компоненты к процессу восстановления/сохраненияInstanceState. Основной точкой входа в API является SavedStateRegistry , который предоставляет способ получения ранее сохраненных состояний с помощью consumeRestoredStateForKey и регистрации обратного вызова для registerSavedStateProvider для предоставления сохраненного состояния, как только система его запросит.

Версия 1.0.0-rc01

2 июля 2019 г.

androidx.savedstate:savedstate:1.0.0-rc01 выпущен. Коммиты, включенные в эту версию, можно найти здесь .

Исправления ошибок

  • Исправлено неправильное правило proguard ( b/132655499 ).

Версия 1.0.0-бета01

7 мая 2019 г.

androidx.savedstate:savedstate:1.0.0-beta01 выпущен. Коммиты, включенные в эту версию, можно найти здесь .

Версия 1.0.0-альфа02

13 марта 2019 г.

androidx.savedstate:savedstate:1.0.0-alpha02 выпущен. androidx.savedstate:savedstate объединяет артефакты androidx.savedstate:savedstate-bundle и androidx.savedstate:savedstate-common в один артефакт, поскольку было решено упростить инфраструктуру savestate и удалить дженерики из SavedStateRegistry . Таким образом, нет необходимости в отдельных модулях.

Полный список коммитов, включённых в эту версию, можно найти здесь .

Новые возможности

  • Добавлен SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz ) . Для данного класса будет создан экземпляр, и метод AutoRecreated.onRecreated будет запущен при перезапуске компонента-владельца.

Изменения API

  • Обобщенные шаблоны удалены из SavedStateRegistry<T>
  • AbstractSavedStateRegistry и BundlableSavedStateRegistry удалены, вместо этого используйте простой SavedStateRegistry
  • BundleSavedStateRegistryOwner переименован в SavedStateRegistryOwner

Версия 1.0.0-альфа01

17 декабря 2018 г.

Это первый выпуск SavedState .

Новые возможности

androidx.savedstate — это новый набор альфа-API, который позволяет разработчикам подключать компоненты к процессу восстановления/сохраненияInstanceState. Основной точкой входа в API является SavedStateRegistry<T> , который предоставляет способ получить ранее сохраненное состояние через consumeRestoredStateForKey и зарегистрировать обратный вызов для registerSavedStateProvider для предоставления сохраненного состояния, как только система его запросит.