Сохраненное состояние
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 5 ноября 2025 г. | 1.4.0 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от SavedState, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
Круто
dependencies { // Java language implementation implementation "androidx.savedstate:savedstate:1.4.0" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.4.0" }
Котлин
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.4.0") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.4.0") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см . в документации по системе отслеживания проблем .
Версия 1.4
Версия 1.4.0
5 ноября 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0 . Версия 1.4.0 содержит следующие коммиты .
Версия 1.4.0-rc01
22 октября 2025 г.
androidx.savedstate:savedstate-*:1.4.0-rc01 выпущен без изменений с версии 1.4.0-beta01. Версия 1.4.0-rc01 содержит следующие коммиты .
Версия 1.4.0-beta01
8 октября 2025 г.
androidx.savedstate:savedstate-*:1.4.0-beta01 выпущен без каких-либо заметных изменений с момента последней альфа-версии. Версия 1.4.0-beta01 содержит следующие коммиты .
Версия 1.4.0-альфа03
27 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha03 . Версия 1.4.0-alpha03 содержит следующие коммиты .
Изменения API
- Добавить поддержку типов, допускающих значение NULL, в
encodeToSavedStateиdecodeFromSavedState. ( I79062 , b/439527454 ) - Обновите Compose до версии 1.9.0. ( I2b9de )
Версия 1.4.0-альфа02
13 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha02 . Версия 1.4.0-alpha02 содержит следующие коммиты .
Версия 1.4.0-альфа01
30 июля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит следующие коммиты .
Изменения API
- Добавить встроенную поддержку типов, допускающих значение NULL, в
SavedStateRegistryOwner.saved, упрощая сохранение и восстановление свойств, допускающих значение NULL. ( Ia632 , b/421325690 )
Версия 1.3
Версия 1.3.3
17 сентября 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.3 . Версия 1.3.3 содержит следующие коммиты .
Исправления ошибок
- Исправлена ошибка, связанная с неприменением плагина Compose Compiler, из-за которой артефакты
SavedStateKMP были повреждены. ( Id2290 , b/443965665 )
Версия 1.3.2
27 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.2 . Версия 1.3.2 содержит следующие коммиты .
Новые функции
- Добавлены новые цели Kotlin Multiplatform (KMP) в артефакт SavedState
*-compose. Lifecycle теперь поддерживает следующие платформы: JVM (Android и десктоп), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS). ( /Idcf26 )
Версия 1.3.1
16 июля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.1 . Версия 1.3.1 содержит следующие коммиты .
Исправления ошибок
- Добавьте все цели KMP, поддерживаемые аннотациями, в артефакты
SavedState. - Добавлены новые цели Kotlin Multiplatform (KMP) для артефактов
SavedState.SavedStateтеперь поддерживает следующие платформы: JVM (Android и десктоп), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS). Обратите внимание, что новые цели KMP для артефактов*-composeне добавлены, так как это зависит от стабильной версии Compose 1.9 ( I062f4 ).
Версия 1.3.0
7 мая 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0 . Версия 1.3.0 содержит следующие коммиты .
Важные изменения с версии 1.2.0
-
LocalSavedStateRegistryOwnerперенесён из Compose UI в новый модульsavedstate-compose, чтобы его вспомогательные API на основе Compose можно было использовать вне Compose UI. Этот модуль следует использовать всегда при использовании Compose UI1.9.0-alpha02и выше, но он обратно совместим и может использоваться со всеми версиями Compose. - Расширения
savedstate-ktxдля Kotlin теперь перенесены в базовый модуль savestate. - Экземпляры
SavedStateRegistryOwner, полученные с помощьюfindViewTreeSavedStateRegistryOwnerтеперь можно разрешить через непересекающиеся родительские элементы представления, такие какViewOverlay. Подробнее о непересекающихся родительских элементах представления см. в примечаниях к выпуску ядра или в документации поViewTree.setViewTreeDisjointParent.
Kotlin Мультиплатформенный
- Модуль
SavedStateтеперь совместим с KMP. Поддерживаемые платформы включают Android, iOS, Linux, Mac и JVM. Введен непрозрачный тип
SavedStateв качестве абстракции для обеспечения согласованного способа сохранения и восстановления состояния приложения в KMP. Он включаетSavedStateReaderиSavedStateWriterдля изменения сохраняемого состояния. В AndroidSavedState— это псевдоним типаBundle, обеспечивающий бинарную совместимость и упрощающий миграцию существующих API в общий исходный набор. На других платформахSavedState— это экземплярMap<String, Any>.// 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") }
Поддержка сериализации KotlinX
SavedStateтеперь поддерживает сериализацию KotlinX. Вы можете преобразовать класс с аннотацией@SerializableвSavedStateс помощью методовencodeToSavedStateиdecodeFromSavedState. ВозвращаемыйSavedStateпредставляет собой обычныйBundleна Android и может использоваться любым API, принимающимBundle.@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }Хотя большинство типов (например, примитивные типы) поддерживаются напрямую без необходимости какой-либо настройки, дополнительные сериализаторы, которые можно использовать с
@Serializable(with = ___:class)можно найти в пакетеandroidx.savedstate.serialization.serializersв модулеsavedstateи в пакетеandroidx.savedstate.compose.serialization.serializersв модулеsavedstate-compose.Мы также включили ленивый делегат свойства
saved, чтобы упростить сохранение классов@SerializableвSavedStateRegistryOwner(например,ComponentActivity,Fragmentи т. д.) и автоматическое восстановление этих классов при завершении и восстановлении процесса. Обратите внимание, чтоsavedделегат является ленивым и не будет вызывать лямбда-функциюinitи сохранять что-либо вSavedStateRegistryдо тех пор, пока к нему не будет выполнено обращение.@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }Аналогичный делегат
savedсвойства дляSavedStateHandleдобавлен в Lifecycle2.9.0.
Версия 1.3.0-rc01
23 апреля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит следующие коммиты .
Версия 1.3.0-beta01
9 апреля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит следующие коммиты .
Обновления зависимостей
- Эта библиотека теперь ориентирована на уровень языка Kotlin 2.0 и требует KGP 2.0.0 или более поздней версии. ( Idb6b5 )
Версия 1.3.0-альфа11
26 марта 2025 г.
androidx.savedstate:savedstate-*:1.3.0-alpha11 выпущен без заметных изменений. Версия 1.3.0-alpha11 содержит следующие коммиты .
Версия 1.3.0-альфа10
12 марта 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha10 . Версия 1.3.0-alpha10 содержит следующие коммиты .
Новые функции
- Добавить нематериализованные варианты метода для
getколлекций вSavedStateReader. ( I0b641 , b/399820614 ) - Добавьте
encodeDefaultsвSavedStateConfiguration, что позволит настраивать, следует ли кодировать свойства со значениями по умолчанию. ( I893cc , b/395104517 ) - Добавить
SnapshotStateMapSerializerдля поддержкиmutableStateMapOf. ( Ie6f19 , b/378895074 ) - Добавить
SnapshotStateListSerializerдля поддержкиmutableStateListOf. ( I4d888 , b/378895074 ) - Добавлены альтернативные методы
getOrNullдля вариантовSavedStateReader.get. Эти методы будут автоматически упаковывать примитивные значения. ( I6228c , b/399820614 )
Изменения API
- Удалить
getOrElseизSavedStateReaderв пользуgetOrNull() ?: else(). ( I87317 , b/399820614 ) - Удалить
inlineмодификатор из методовSavedStateReaderиSavedStateWriter. ( If2a02 , b/399820614 ) - Удалить встроенные сериализаторы списков и массивов, специфичные для Android, из публичного API ( Ida293 )
- Заменить
SparseParcelableArraySerializerнаSparseArraySerializer( I91de8 ) - Обеспечить единообразное поведение всех
SavedStateReader.get, выдавая исключение, если тип значения не соответствует типу возврата ( I78c4a , b/399317598 ). - Переименуйте
SavedState*DelegatesвSavedState*Delegate. ( I8589b , b/399629301 ) - Переименуйте
SavedStateConfigвSavedStateConfiguration. ( I043a5 , b/399629301 )
Версия 1.3.0-альфа09
26 февраля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha09 . Версия 1.3.0-alpha09 содержит следующие коммиты .
Новые функции
- Добавить резервный вариант для встроенных типов, гарантируя, что все типы, поддерживаемые
Bundleмогут использоваться сencodeAsSavedState/decodeFromSavedStateпо умолчанию или для свойств в классах@Serializableчерез аннотацию@Contextual. ( Ic01d2 ) - Включить поддержку
classDiscriminatorиclassDiscriminatorModeвSavedStateConfig. ( I69b66 , b/395104517 )
Изменения API
- Добавить параметр
SavedStateConfigк делегатамsaved()( I39b3a ) - Создает встроенные сериализаторы как объекты-одиночки ( Ifeee4 )
- Свойства
SavedStateConfigтеперь общедоступны, что позволяет другим модулям использовать эти конфигурации. ( Ie5f49 , b/378897438 ) - Поддержка
@Serializer(with = ...)дляMutableStateFlowSerializerиMutableStateSerializer( I90953 ) - Добавить
contentDeepToStringвSavedStateReader( I14d10 )
Версия 1.3.0-альфа08
12 февраля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha08 . Версия 1.3.0-alpha08 содержит следующие коммиты .
Новые функции
- Переместить
MutableStateSerializerвsavedstate-composeизlifecycle-viewmodel-compose, что позволит использовать API сериализации SavedState сMutableStateиз Compose. ( I4f690 , b/378895074 )
Изменения API
- Добавьте фабричную функцию для создания
SavedStateиз существующегоSavedState. ( I39f9a ) - Добавляет поддержку
Array<SavedState>иList<SavedState>вandroidx.savedstate. ( Idd8a5 ) - Добавить необязательный параметр
SavedStateConfigк кодированию/декодированию SavedState ( I6c4c0 )
Версия 1.3.0-альфа07
29 января 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha07 . Версия 1.3.0-alpha07 содержит следующие коммиты .
Новые функции
- Добавить
MutableStateFlowSerializerдля сериализацииkotlinx.coroutines.flow.MutableStateFlow. ( I6a892 , b/378895070 )
Изменения API
- Заменить перегруженные функции делегата
SavedStateRegistryOwner.saved()параметрами по умолчанию ( Icd1c1 ) - Сделать
JavaSerializableSerializerиParcelableSerializerабстрактными ( I268f6 ) - Удалить универсальный
T : CharSequenceизCharSequenceSerializer( Ib40bd )
Версия 1.3.0-альфа06
11 декабря 2024 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha06 . Версия 1.3.0-alpha06 содержит следующие коммиты .
Новые функции
-
SavedStateKMP теперь поддерживает:IBinder,Size,SizeF,Array<Parcelable>,SparseArray<Parcelable>и Serializable (Android). ( I1ba94 , b/334076622 ) - Добавьте экземпляры
KSerializer, которые можно использовать для кодирования/декодирования типов Java и Android, поддерживаемых Bundle, отметив соответствующее поле в вашем классе с помощью@Serializable(with = ParcelableSerializer::class). ( I8c10f , I28caf , b/376026712 ) - Экземпляры
SavedStateRegistryOwner, полученные с помощьюfindViewTreeSavedStateRegistryOwnerтеперь можно разрешить через непересекающиеся родительские элементы представления, такие какViewOverlay. Подробнее о непересекающихся родительских элементах представления см. в примечаниях к выпуску ядра или в документации поViewTree.setViewTreeDisjointParent. ( Iccb33 ).
Изменения API
- Сделать наименования и организацию пакетов более согласованными с
SavedStateRegistryOwnerDelegate( I8c135 , b/376026744 )
Версия 1.3.0-альфа05
13 ноября 2024 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha05 . Версия 1.3.0-alpha05 содержит следующие коммиты .
Поддержка сериализации KotlinX
SavedStateтеперь поддерживает сериализацию KotlinX. Вы можете преобразовать класс с аннотацией@SerializableвSavedStateс помощью методовencodeToSavedStateиdecodeFromSavedState. ВозвращаемыйSavedStateпредставляет собой обычныйBundleна Android и может использоваться любым API, принимающимBundle. ( I6f59f , b/374102924 )@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }Мы также включили ленивый делегат свойства
saved, чтобы упростить сохранение классов@SerializableвSavedStateRegistryOwner(например,ComponentActivity,Fragmentи т. д.) и обеспечить автоматическое восстановление этих классов при завершении и восстановлении процесса. Обратите внимание, чтоsavedделегат является ленивым и не будет вызывать лямбда-функциюinitи сохранять что-либо вSavedStateRegistryдо тех пор, пока к нему не будет получен доступ. ( I66739 , b/376027806 )@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }Аналогичный делегат
savedсвойства дляSavedStateHandleдобавлен в Lifecycle2.9.0-alpha07.
Изменения API
- Добавить
toMapкSavedState, что позволит преобразовать любойSavedStateв обычнуюMap(поверхностную копию). ( I487b9 , b/334076622 ) -
SavedStateKMP теперь поддерживает массивы. ( Ic0552 , b/334076622 )
Версия 1.3.0-альфа04
30 октября 2024 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha04 . Версия 1.3.0-alpha04 содержит следующие коммиты .
Изменения API
- SavedState KMP теперь поддерживает Char. ( I9ac2f , b/334076622 )
- Добавьте
putNullиisNullв SavedState KMP. ( Iea71d , b/334076622 ) - Добавить дополнительные параметры фабрики
savedStateподдерживающие начальнуюMap<String, Any>( I9b37d , b/334076622 ) - SavedState KMP теперь поддерживает сравнение
contentDeepEquals. ( Ia515c , b/334076622 ) - SavedState KMP теперь поддерживает Long. ( I4c180 , b/334076622 )
Версия 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 содержит следующие коммиты .
Kotlin Мультиплатформенный
- Модуль
SavedStateтеперь совместим с KMP. Поддерживаемые платформы теперь включают Android, iOS, Linux, Mac и JVM. ( I26305 , b/334076622 )
Новые функции
- Введен непрозрачный тип
SavedStateв качестве абстракции для обеспечения согласованного способа сохранения и восстановления состояния приложения в KMP. Он включаетSavedStateReaderиSavedStateWriterдля изменения сохраняемого состояния. В AndroidSavedState— это псевдоним типаBundle, обеспечивающий бинарную совместимость и упрощающий миграцию существующих API в общий исходный набор. На других платформахSavedState— это экземплярMap<String, Any>. ( I18575 , b/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 , b/334076622 ) -
SavedState,SavedStateWriterиSavedStateReaderтеперь совместимы с KMP. ( I26305 , b/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 , b/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 содержит эти коммиты.
Обновления зависимостей
-
SavedStateтеперь зависит от Lifecycle2.6.1. ( c1f621 )
Версия 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чтобы задать и найти ранее заданного владельца. Это заменяет APIsavedstate-ktxдляfindViewTreeSavedStateRegistryOwner.
- Для
Изменения поведения
-
SavedStateRegistryбольше не сохраняет пустой Bundle, если нет состояния для сохранения.
Версия 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 , b/228887344 )
Версия 1.2.0-beta01
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 дляandroidx.savedstate.setViewTreeSavedStateRegistryOwnerиandroidx.savedstate.findViewTreeSavedStateRegistryOwnerвViewдля установки и поиска ранее заданного владельца. Это заменяет APIsavedstate-ktxдляfindViewTreeSavedStateRegistryOwner. Он совместим с бинарным кодом и остаётся совместимым с исходным кодом для реализаций, написанных на языке программирования Java. ( b/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 , b/215406268 )
Изменения API
- Классы
SavedStateRegistryOwner,SavedStateRegistryControllerиRecreatorпереписаны на Kotlin. ДляSavedStateRegistryOwnerэто изменение несовместимо с исходным кодом для классов, написанных на Kotlin — теперь необходимо переопределить свойствоsavedStateRegistryвместо реализации прежней функцииgetSavedStateRegistry(). Это совместимо с исходным кодом и бинарным кодом для реализаций, написанных на языке программирования Java. ( b/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больше не сохраняет пустой Bundle, если нет состояния для сохранения. ( aosp/1896865 , b/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: новый APIViewTreeSavedStateRegistryOwner.get(View)позволяет получить содержащий егоSavedStateRegistryпо экземпляруView. Для корректного заполнения необходимо обновить Activity до1.2.0, Fragment1.3.0и AppCompat до1.3.0-alpha01или выше. - Артефакт
savedstate-ktx: добавлен новый артефактsavedstate-ktxс расширением KotlinfindViewTreeSavedStateRegistryOwner()для работы с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-beta01
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, Fragment1.3.0-alpha05и AppCompat до1.3.0-alpha01. ( aosp/1298679 ) - Новый артефакт
savedstate-ktxбыл добавлен с расширением KotlinfindViewTreeSavedStateRegistryOwner()для работы сViewTreeSavedStateRegistryOwner. ( aosp/1299434 )
Версия 1.0.0
Версия 1.0.0
5 сентября 2019 г.
Выпущена версия androidx.savedstate:savedstate:1.0.0 . Изменения, включённые в эту версию, можно найти здесь .
Основные возможности SavedState 1.0.0
androidx.savedstate перешёл в стабильную версию. Это набор API, позволяющий разработчикам добавлять компоненты в процесс восстановления/сохранения состояния экземпляра. Основной точкой входа API является SavedStateRegistry , который позволяет извлекать ранее сохранённые состояния с помощью consumeRestoredStateForKey и регистрировать обратный вызов registerSavedStateProvider для предоставления сохранённого состояния по запросу системы.
Версия 1.0.0-rc01
2 июля 2019 г.
Выпущена версия androidx.savedstate:savedstate:1.0.0-rc01 . Изменения, включённые в эту версию, можно найти здесь .
Исправления ошибок
- Исправлено неверное правило proguard ( b/132655499 )
Версия 1.0.0-beta01
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 в один, поскольку было принято решение упростить инфраструктуру сохранённых состояний и удалить дженерики из 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, позволяющий разработчикам добавлять компоненты к процессу restore/saveInstanceState. Основной точкой входа этого API является SavedStateRegistry<T> , который позволяет получить ранее сохранённое состояние через consumeRestoredStateForKey и зарегистрировать обратный вызов registerSavedStateProvider для предоставления сохранённого состояния по запросу системы.
Сохраненное состояние
| Последнее обновление | Стабильный релиз | Кандидат на релиз | Бета-версия | Альфа-релиз |
|---|---|---|---|---|
| 5 ноября 2025 г. | 1.4.0 | - | - | - |
Объявление зависимостей
Чтобы добавить зависимость от SavedState, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .
Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:
Круто
dependencies { // Java language implementation implementation "androidx.savedstate:savedstate:1.4.0" // Kotlin implementation "androidx.savedstate:savedstate-ktx:1.4.0" }
Котлин
dependencies { // Java language implementation implementation("androidx.savedstate:savedstate:1.4.0") // Kotlin implementation("androidx.savedstate:savedstate-ktx:1.4.0") }
Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .
Обратная связь
Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.
Более подробную информацию см . в документации по системе отслеживания проблем .
Версия 1.4
Версия 1.4.0
5 ноября 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0 . Версия 1.4.0 содержит следующие коммиты .
Версия 1.4.0-rc01
22 октября 2025 г.
androidx.savedstate:savedstate-*:1.4.0-rc01 выпущен без изменений с версии 1.4.0-beta01. Версия 1.4.0-rc01 содержит следующие коммиты .
Версия 1.4.0-beta01
8 октября 2025 г.
androidx.savedstate:savedstate-*:1.4.0-beta01 выпущен без каких-либо заметных изменений с момента последней альфа-версии. Версия 1.4.0-beta01 содержит следующие коммиты .
Версия 1.4.0-альфа03
27 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha03 . Версия 1.4.0-alpha03 содержит следующие коммиты .
Изменения API
- Добавить поддержку типов, допускающих значение NULL, в
encodeToSavedStateиdecodeFromSavedState. ( I79062 , b/439527454 ) - Обновите Compose до версии 1.9.0. ( I2b9de )
Версия 1.4.0-альфа02
13 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha02 . Версия 1.4.0-alpha02 содержит следующие коммиты .
Версия 1.4.0-альфа01
30 июля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит следующие коммиты .
Изменения API
- Добавить встроенную поддержку типов, допускающих значение NULL, в
SavedStateRegistryOwner.saved, упрощая сохранение и восстановление свойств, допускающих значение NULL. ( Ia632 , b/421325690 )
Версия 1.3
Версия 1.3.3
17 сентября 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.3 . Версия 1.3.3 содержит следующие коммиты .
Исправления ошибок
- Исправлена ошибка, связанная с неприменением плагина Compose Compiler, из-за которой артефакты
SavedStateKMP были повреждены. ( Id2290 , b/443965665 )
Версия 1.3.2
27 августа 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.2 . Версия 1.3.2 содержит следующие коммиты .
Новые функции
- Добавлены новые цели Kotlin Multiplatform (KMP) в артефакт SavedState
*-compose. Lifecycle теперь поддерживает следующие платформы: JVM (Android и десктоп), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS). ( /Idcf26 )
Версия 1.3.1
16 июля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.1 . Версия 1.3.1 содержит следующие коммиты .
Исправления ошибок
- Добавьте все цели KMP, поддерживаемые аннотациями, в артефакты
SavedState. - Добавлены новые цели Kotlin Multiplatform (KMP) для артефактов
SavedState.SavedStateтеперь поддерживает следующие платформы: JVM (Android и десктоп), Native (Linux, iOS, watchOS, macOS, MinGW) и Web (JavaScript, WasmJS). Обратите внимание, что новые цели KMP для артефактов*-composeне добавлены, так как это зависит от стабильной версии Compose 1.9 ( I062f4 ).
Версия 1.3.0
7 мая 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0 . Версия 1.3.0 содержит следующие коммиты .
Важные изменения с версии 1.2.0
-
LocalSavedStateRegistryOwnerперенесён из Compose UI в новый модульsavedstate-compose, чтобы его вспомогательные API на основе Compose можно было использовать вне Compose UI. Этот модуль следует использовать всегда при использовании Compose UI1.9.0-alpha02и выше, но он обратно совместим и может использоваться со всеми версиями Compose. - Расширения
savedstate-ktxдля Kotlin теперь перенесены в базовый модуль savestate. - Экземпляры
SavedStateRegistryOwner, полученные с помощьюfindViewTreeSavedStateRegistryOwnerтеперь можно разрешить через непересекающиеся родительские элементы представления, такие какViewOverlay. Подробнее о непересекающихся родительских элементах представления см. в примечаниях к выпуску ядра или в документации поViewTree.setViewTreeDisjointParent.
Kotlin Мультиплатформенный
- Модуль
SavedStateтеперь совместим с KMP. Поддерживаемые платформы включают Android, iOS, Linux, Mac и JVM. Введен непрозрачный тип
SavedStateв качестве абстракции для обеспечения согласованного способа сохранения и восстановления состояния приложения в KMP. Он включаетSavedStateReaderиSavedStateWriterдля изменения сохраняемого состояния. В AndroidSavedState— это псевдоним типаBundle, обеспечивающий бинарную совместимость и упрощающий миграцию существующих API в общий исходный набор. На других платформахSavedState— это экземплярMap<String, Any>.// 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") }
Поддержка сериализации KotlinX
SavedStateтеперь поддерживает сериализацию KotlinX. Вы можете преобразовать класс с аннотацией@SerializableвSavedStateс помощью методовencodeToSavedStateиdecodeFromSavedState. ВозвращаемыйSavedStateпредставляет собой обычныйBundleна Android и может использоваться любым API, принимающимBundle.@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }Хотя большинство типов (например, примитивные типы) поддерживаются напрямую без необходимости какой-либо настройки, дополнительные сериализаторы, которые можно использовать с
@Serializable(with = ___:class)можно найти в пакетеandroidx.savedstate.serialization.serializersв модулеsavedstateи в пакетеandroidx.savedstate.compose.serialization.serializersв модулеsavedstate-compose.Мы также включили ленивый делегат свойства
saved, чтобы упростить сохранение классов@SerializableвSavedStateRegistryOwner(например,ComponentActivity,Fragmentи т. д.) и автоматическое восстановление этих классов при завершении и восстановлении процесса. Обратите внимание, чтоsavedделегат является ленивым и не будет вызывать лямбда-функциюinitи сохранять что-либо вSavedStateRegistryдо тех пор, пока к нему не будет выполнено обращение.@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }Аналогичный делегат
savedсвойства дляSavedStateHandleдобавлен в Lifecycle2.9.0.
Версия 1.3.0-rc01
23 апреля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит следующие коммиты .
Версия 1.3.0-beta01
9 апреля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит следующие коммиты .
Обновления зависимостей
- Эта библиотека теперь ориентирована на уровень языка Kotlin 2.0 и требует KGP 2.0.0 или более поздней версии. ( Idb6b5 )
Версия 1.3.0-альфа11
26 марта 2025 г.
androidx.savedstate:savedstate-*:1.3.0-alpha11 выпущен без заметных изменений. Версия 1.3.0-alpha11 содержит следующие коммиты .
Версия 1.3.0-альфа10
12 марта 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha10 . Версия 1.3.0-alpha10 содержит следующие коммиты .
Новые функции
- Добавить нематериализованные варианты метода для
getколлекций вSavedStateReader. ( I0b641 , b/399820614 ) - Добавьте
encodeDefaultsвSavedStateConfiguration, что позволит настраивать, следует ли кодировать свойства со значениями по умолчанию. ( I893cc , b/395104517 ) - Добавить
SnapshotStateMapSerializerдля поддержкиmutableStateMapOf. ( Ie6f19 , b/378895074 ) - Добавить
SnapshotStateListSerializerдля поддержкиmutableStateListOf. ( I4d888 , b/378895074 ) - Добавлены альтернативные методы
getOrNullдля вариантовSavedStateReader.get. Эти методы будут автоматически упаковывать примитивные значения. ( I6228c , b/399820614 )
Изменения API
- Удалить
getOrElseизSavedStateReaderв пользуgetOrNull() ?: else(). ( I87317 , b/399820614 ) - Удалить
inlineмодификатор из методовSavedStateReaderиSavedStateWriter. ( If2a02 , b/399820614 ) - Удалить встроенные сериализаторы списков и массивов, специфичные для Android, из публичного API ( Ida293 )
- Заменить
SparseParcelableArraySerializerнаSparseArraySerializer( I91de8 ) - Обеспечить единообразное поведение всех
SavedStateReader.get, выдавая исключение, если тип значения не соответствует типу возврата ( I78c4a , b/399317598 ). - Переименуйте
SavedState*DelegatesвSavedState*Delegate. ( I8589b , b/399629301 ) - Переименуйте
SavedStateConfigвSavedStateConfiguration. ( I043a5 , b/399629301 )
Версия 1.3.0-альфа09
26 февраля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha09 . Версия 1.3.0-alpha09 содержит следующие коммиты .
Новые функции
- Добавить резервный вариант для встроенных типов, гарантируя, что все типы, поддерживаемые
Bundleмогут использоваться сencodeAsSavedState/decodeFromSavedStateпо умолчанию или для свойств в классах@Serializableчерез аннотацию@Contextual. ( Ic01d2 ) - Включить поддержку
classDiscriminatorиclassDiscriminatorModeвSavedStateConfig. ( I69b66 , b/395104517 )
Изменения API
- Добавить параметр
SavedStateConfigк делегатамsaved()( I39b3a ) - Создает встроенные сериализаторы как объекты-одиночки ( Ifeee4 )
- Свойства
SavedStateConfigтеперь общедоступны, что позволяет другим модулям использовать эти конфигурации. ( Ie5f49 , b/378897438 ) - Поддержка
@Serializer(with = ...)дляMutableStateFlowSerializerиMutableStateSerializer( I90953 ) - Добавить
contentDeepToStringвSavedStateReader( I14d10 )
Версия 1.3.0-альфа08
12 февраля 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha08 . Версия 1.3.0-alpha08 содержит следующие коммиты .
Новые функции
- Переместить
MutableStateSerializerвsavedstate-composeизlifecycle-viewmodel-compose, что позволит использовать API сериализации SavedState сMutableStateиз Compose. ( I4f690 , b/378895074 )
Изменения API
- Добавьте фабричную функцию для создания
SavedStateиз существующегоSavedState. ( I39f9a ) - Добавляет поддержку
Array<SavedState>иList<SavedState>вandroidx.savedstate. ( Idd8a5 ) - Добавить необязательный параметр
SavedStateConfigк кодированию/декодированию SavedState ( I6c4c0 )
Версия 1.3.0-альфа07
29 января 2025 г.
Выпущен androidx.savedstate:savedstate-*:1.3.0-alpha07 . Версия 1.3.0-alpha07 содержит следующие коммиты .
Новые функции
- Добавить
MutableStateFlowSerializerдля сериализацииkotlinx.coroutines.flow.MutableStateFlow. ( I6a892 , b/378895070 )
Изменения API
- Заменить перегруженные функции делегата
SavedStateRegistryOwner.saved()параметрами по умолчанию ( Icd1c1 ) - Make
JavaSerializableSerializerandParcelableSerializerabstract ( I268f6 ) - Remove generic
T : CharSequencefromCharSequenceSerializer( Ib40bd )
Version 1.3.0-alpha06
11 декабря 2024 г.
androidx.savedstate:savedstate-*:1.3.0-alpha06 is released. Version 1.3.0-alpha06 contains these commits .
Новые функции
-
SavedStateKMP now supports:IBinder,Size,SizeF,Array<Parcelable>,SparseArray<Parcelable>and Serializable (Android). ( I1ba94 , b/334076622 ) - Add
KSerializerinstances that can be used to encode/decode Java and Android types supported by Bundle by marking the relevant field in your class with@Serializable(with = ParcelableSerializer::class). ( I8c10f , I28caf , b/376026712 ) -
SavedStateRegistryOwnerinstances retrieved viafindViewTreeSavedStateRegistryOwnercan now be resolved through disjoint parents of a view, such as aViewOverlay. See the release notes of core or the documentation inViewTree.setViewTreeDisjointParentfor more information on disjoint view parents. ( Iccb33 )
API Changes
- Make the namings and package organization more consistent with
SavedStateRegistryOwnerDelegate( I8c135 , b/376026744 )
Version 1.3.0-alpha05
13 ноября 2024 г.
androidx.savedstate:savedstate-*:1.3.0-alpha05 is released. Version 1.3.0-alpha05 contains these commits .
KotlinX Serialization Support
SavedStatenow includes KotlinX Serialization support. You can convert a class annotated with@Serializableto aSavedStateusing the methodsencodeToSavedStateanddecodeFromSavedState. The returnedSavedStateis a regularBundleon Android and can be used by any API that accepts aBundle. ( I6f59f , b/374102924 )@Serializable data class Person(val firstName: String, val lastName: String) fun main() { val person = Person("John", "Doe") val encoded: SavedState = encodeToSavedState(person) val decoded: Person = decodeFromSavedState(encoded) }We also have included
saved, a lazy property delegate, to make it easy to store@Serializableclasses in aSavedStateRegistryOwner(eg,ComponentActivity,Fragment, etc.) and have those classes automatically be restored across process death and recreation. Please note thesaveddelegate is lazy and will not call theinitlambda or save anything into theSavedStateRegistryuntil it is accessed. ( I66739 , b/376027806 )@Serializable data class Person(val firstName: String, val lastName: String) class MyActivity : ComponentActivity() { var person by saved { Person("John", "Doe") } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.person = Person("Jane", "Doe") } }There is a similar
savedproperty delegate forSavedStateHandleadded in Lifecycle2.9.0-alpha07.
API Changes
- Add
toMaptoSavedState, allowing anySavedStateto be converted to a regularMap(shallow copy). ( I487b9 , b/334076622 ) -
SavedStateKMP now supports arrays. ( Ic0552 , b/334076622 )
Version 1.3.0-alpha04
30 октября 2024 г.
androidx.savedstate:savedstate-*:1.3.0-alpha04 is released. Version 1.3.0-alpha04 contains these commits .
API Changes
- SavedState KMP now supports Char. ( I9ac2f , b/334076622 )
- Add
putNullandisNullto SavedState KMP. ( Iea71d , b/334076622 ) - Add additional
savedStatefactory parameters supporting an initialMap<String, Any>( I9b37d , b/334076622 ) - SavedState KMP now supports
contentDeepEqualscomparison. ( Ia515c , b/334076622 ) - SavedState KMP now supports Long. ( I4c180 , b/334076622 )
Version 1.3.0-alpha03
16 октября 2024 г.
androidx.savedstate:savedstate-*:1.3.0-alpha03 is released with no notable changes. Version 1.3.0-alpha03 contains these commits .
Version 1.3.0-alpha02
2 октября 2024 г.
androidx.savedstate:savedstate-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits .
Kotlin Multiplatform
- The
SavedStatemodule is now KMP compatible. Supported platforms now include Android, iOS, Linux, Mac, and JVM desktop environments. ( I26305 , b/334076622 )
Новые функции
- Introduce
SavedStateopaque type as an abstraction to provide a consistent way to save and restore application state in KMP. It includes aSavedStateReaderandSavedStateWriterfor modifying the state to be saved. On Android,SavedStateis a type alias forBundle, ensuring binary compatibility and facilitating the migration of existing APIs to a common source set. On other platforms,SavedStateis aMap<String, Any>instance. ( I18575 , b/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 Changes
-
SavedStateRegistryandSavedStateRegistryControllerare now KMP compatible. ( Id7bb8 , b/334076622 ) -
SavedState,SavedStateWriterandSavedStateReaderare now KMP compatible. ( I26305 , b/334076622 )
Version 1.3.0-alpha01
7 августа 2024 г.
androidx.savedstate:savedstate:1.3.0-alpha01 and androidx.savedstate:savedstate-ktx:1.3.0-alpha01 are released. Version 1.3.0-alpha01 contains these commits .
API Changes
- The
savedstate-ktxkotlin extensions have now been moved to the base savedstate module. ( I1cc18 , b/274803094 )
Примечание
- Update
compileSdkto 35 ( 5dc41be )
Версия 1.2.1
Версия 1.2.1
22 марта 2023 г.
androidx.savedstate:savedstate:1.2.1 and androidx.savedstate:savedstate-ktx:1.2.1 are released. Version 1.2.1 contains these commits.
Dependency Updates
-
SavedStatenow depends on Lifecycle2.6.1. ( c1f621 )
Версия 1.2.0
Версия 1.2.0
29 июня 2022 г.
androidx.savedstate:savedstate:1.2.0 and androidx.savedstate:savedstate-ktx:1.2.0 are released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
-
SavedStateRegistryControllernow allows early attachment of theSavedStateRegistryviaperformAttach(). - You can now retrieve a previously registered
SavedStateProviderfrom aSavedStateRegistryviagetSavedStateProvider(). - The
SavedStatelibrary has been rewritten in Kotlin.- For
SavedStateRegistryOwner, this is a source incompatible change for those classes written in Kotlin - you must now override thesavedStateRegistryproperty rather than implement the previousgetSavedStateRegistry()function. - For
ViewTreeSavedStateRegistryOwner, this is a source incompatible change for those classes written in Kotlin - you must now directly import and use the Kotlin extension methods onViewofandroidx.savedstate.setViewTreeSavedStateRegistryOwnerandandroidx.savedstate.findViewTreeSavedStateRegistryOwnerto set and find a previously set owner. This replaces thesavedstate-ktxAPI offindViewTreeSavedStateRegistryOwner.
- For
Изменения поведения
-
SavedStateRegistryno longer saves an empty Bundle if there is no state to save.
Version 1.2.0-rc01
11 мая 2022 г.
androidx.savedstate:savedstate:1.2.0-rc01 and androidx.savedstate:savedstate-ktx:1.2.0-rc01 are released. Version 1.2.0-rc01 contains these commits.
Documentation Changes
- The
SavedStateRegistryOwnerKdocs have been updated to clarify the responsibilities and contract that the owner has on how it should implement the interface or when they should call the methods onSavedStateRegistryController. ( Iefc95 , b/228887344 )
Version 1.2.0-beta01
20 апреля 2022 г.
androidx.savedstate:savedstate:1.2.0-beta01 and androidx.savedstate:savedstate-ktx:1.2.0-beta01 are released. Version 1.2.0-beta01 contains these commits.
API Changes
- The
SavedStateRegistryandViewTreeSavedStateRegistryOwnerclasses have been rewritten in Kotlin. ForViewTreeSavedStateRegistryOwner, this is a source incompatible change for those classes written in Kotlin - you must now directly import and use the Kotlin extension methods onViewofandroidx.savedstate.setViewTreeSavedStateRegistryOwnerandandroidx.savedstate.findViewTreeSavedStateRegistryOwnerto set and find a previously set owner. This replaces thesavedstate-ktxAPI offindViewTreeSavedStateRegistryOwner. This is binary compatible and remains source compatible for implementations written in the Java programming language. ( b/220191285 )
Version 1.2.0-alpha02
6 апреля 2022 г.
androidx.savedstate:savedstate:1.2.0-alpha02 and androidx.savedstate:savedstate-ktx:1.2.0-alpha02 are released. Version 1.2.0-alpha02 contains these commits.
Новые функции
- You can now retrieve a previously registered
SavedStateProviderfrom aSavedStateRegistryviagetSavedStateProvider(). ( I7ea47 , b/215406268 )
API Changes
- The
SavedStateRegistryOwner,SavedStateRegistryController, andRecreatorclasses have been rewritten in Kotlin. ForSavedStateRegistryOwner, this is a source incompatible change for those classes written in Kotlin - you must now override thesavedStateRegistryproperty rather than implement the previousgetSavedStateRegistry()function. This is binary compatible and source compatible for implementations written in the Java programming language. ( b/220191285 )
Version 1.2.0-alpha01
26 января 2022 г.
androidx.savedstate:savedstate:1.2.0-alpha01 and androidx.savedstate:savedstate-ktx:1.2.0-alpha01 are released. Version 1.2.0-alpha01 contains these commits.
Новые функции
-
SavedStateRegistryControllernow allows early attachment of theSavedStateRegistryviaperformAttach(). ( Ice4bf )
Изменения поведения
-
SavedStateRegistryno longer saves an empty Bundle if there is no state to save. ( aosp/1896865 , b/203457956 )
Версия 1.1.0
Версия 1.1.0
10 февраля 2021 г.
androidx.savedstate:savedstate:1.1.0 and androidx.savedstate:savedstate-ktx:1.1.0 are released. Version 1.1.0 contains these commits.
Major changes since 1.0.0
-
ViewTreeSavedStateRegistryOwnerAPI : A newViewTreeSavedStateRegistryOwner.get(View)API allows you to retrieve the containingSavedStateRegistrygiven aViewinstance. You must upgrade to Activity1.2.0, Fragment1.3.0, and AppCompat1.3.0-alpha01or higher to populate this correctly. -
savedstate-ktxartifact : The newsavedstate-ktxartifact has been added with afindViewTreeSavedStateRegistryOwner()Kotlin extension for working withViewTreeSavedStateRegistryOwner.
Version 1.1.0-rc01
16 декабря 2020 г.
androidx.savedstate:savedstate:1.1.0-rc01 and androidx.savedstate:savedstate-ktx:1.1.0-rc01 are released with no changes since 1.1.0-beta01 . Version 1.1.0-rc01 contains these commits.
Version 1.1.0-beta01
1 октября 2020 г.
androidx.savedstate:savedstate:1.1.0-beta01 and androidx.savedstate:savedstate-ktx:1.1.0-beta01 are released with no changes since 1.1.0-alpha01 . Version 1.1.0-beta01 contains these commits.
Version 1.1.0-alpha01
20 мая 2020 г.
androidx.savedstate:savedstate:1.1.0-alpha01 and androidx.savedstate:savedstate-ktx:1.1.0-alpha01 are released. Version 1.1.0-alpha01 contains these commits.
Новые функции
- A new
ViewTreeSavedStateRegistryOwner.get(View)API allows you to retrieve the containingSavedStateRegistrygiven aViewinstance. You must upgrade to Activity1.2.0-alpha05, Fragment1.3.0-alpha05, and AppCompat1.3.0-alpha01to populate this correctly. ( aosp/1298679 ) - The new
savedstate-ktxartifact has been added with afindViewTreeSavedStateRegistryOwner()Kotlin extension for working withViewTreeSavedStateRegistryOwner. ( aosp/1299434 )
Версия 1.0.0
Версия 1.0.0
September 5, 2019
androidx.savedstate:savedstate:1.0.0 is released. The commits included in this version can be found here .
Major features of SavedState 1.0.0
androidx.savedstate graduated to a stable release. This is a set of APIs that allow developers to plugin components into the restore / saveInstanceState process. The main entry point of the API is SavedStateRegistry , which provides a way to retrieve previously saved states using consumeRestoredStateForKey and register a callback to registerSavedStateProvider to provide a saved state once system requests it.
Version 1.0.0-rc01
2 июля 2019 г.
androidx.savedstate:savedstate:1.0.0-rc01 is released. The commits included in this version can be found here .
Исправления ошибок
- Fixed incorrect proguard rule ( b/132655499 )
Version 1.0.0-beta01
7 мая 2019 г.
androidx.savedstate:savedstate:1.0.0-beta01 is released. The commits included in this version can be found here .
Version 1.0.0-alpha02
13 марта 2019 г.
androidx.savedstate:savedstate:1.0.0-alpha02 is released. androidx.savedstate:savedstate combines artifacts androidx.savedstate:savedstate-bundle and androidx.savedstate:savedstate-common into one artifact, because it was decided to simplify savedstate infrastructure and remove generics from SavedStateRegistry . Thus, there is no need for separate modules.
The full list of commits included in this version can be found here .
Новые функции
-
SavedStateRegistry.runOnNextRecreaction(Class<? extends AutoRecreated> clazz )was added. The given class will be instantiated and the methodAutoRecreated.onRecreatedwill be run when the owning component restarted.
API changes
- Generics removed from
SavedStateRegistry<T> - AbstractSavedStateRegistry & BundlableSavedStateRegistry are removed, use simple
SavedStateRegistryinstead -
BundleSavedStateRegistryOwneris renamed toSavedStateRegistryOwner
Version 1.0.0-alpha01
December 17, 2018
This is the first release of SavedState .
Новые функции
androidx.savedstate is a new set of alpha APIs that allow developers to plugin components to the restore / saveInstanceState process. The main entry point of the API is SavedStateRegistry<T> , which provides a way to retrieve previously savedstate via consumeRestoredStateForKey and register a callback to registerSavedStateProvider to provide a savedstate once system requests it.