Сохраненное государство

Разрабатывайте подключаемые компоненты, которые сохраняют состояние пользовательского интерфейса при завершении процесса и восстанавливают его при перезапуске процесса.
Последнее обновление Стабильный релиз Предварительная версия для выпуска Бета-версия Альфа-версия
11 марта 2026 г. 1.4.0 - - 1.5.0-alpha01

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

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

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

Groovy

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

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

Kotlin

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

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

Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .

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

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

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

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

Версия 1.5

Версия 1.5.0-alpha01

11 марта 2026 г.

Выпущена версия androidx.savedstate:savedstate-*:1.5.0-alpha01 . Версия 1.5.0-alpha01 содержит следующие коммиты .

Новые функции

  • Включить универсальную сериализацию для объектов SavedState , позволяющую кодировать и декодировать их с использованием стандартных форматов, таких как CBOR или JSON, на всех платформах. ( Iafda4 , b/425919375 )

Изменения в API

  • Добавлены функции расширения putKotlinSerializable и getKotlinSerializable к SavedStateWriter и SavedStateReader , позволяющие напрямую сохранять и извлекать объекты Kotlin Serializable с помощью ключей, что упрощает интеграцию с API SavedState . ( Iba02e )
  • Добавьте фабричные функции для LifecycleOwner , ViewModelStoreOwner и SavedStateRegistryOwner , чтобы уменьшить количество шаблонного кода при создании пользовательских компонентов-владельцев. ( I9682c )
  • Включите сохранение и восстановление SnapshotStateSet (созданного с помощью mutableStateSetOf() ) с помощью rememberSerializable . Теперь вы можете использовать SnapshotStateSet в rememberSerializable без необходимости создания собственного механизма сохранения. ( I9a4ed , b/449498367 )

Версия 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-alpha03

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-alpha02

13 августа 2025 г.

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

Версия 1.4.0-alpha01

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, что приводило к некорректной работе артефактов SavedState KMP. ( 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 и Desktop), нативные приложения (Linux, iOS, watchOS, macOS, MinGW) и веб-приложения (JavaScript, WasmJS). ( /Idcf26 )

Версия 1.3.1

16 июля 2025 г.

Выпущена версия androidx.savedstate:savedstate-*:1.3.1 . Версия 1.3.1 содержит следующие коммиты .

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

  • Добавьте все поддерживаемые аннотациями цели KMP в артефакты SavedState .
  • В артефакты SavedState добавлены новые цели Kotlin Multiplatform (KMP). Теперь SavedState поддерживает следующие платформы: JVM (Android и Desktop), нативные приложения (Linux, iOS, watchOS, macOS, MinGW) и веб-приложения (JavaScript, WasmJS). Обратите внимание, что в артефакты *-compose новые цели KMP не добавлены, так как это зависит от стабильной версии Compose 1.9. ( I062f4 ).

Версия 1.3.0

7 мая 2025 г.

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

Важные изменения по сравнению с версией 1.2.0

  • LocalSavedStateRegistryOwner был перенесен из пользовательского интерфейса Compose в новый модуль savedstate-compose , чтобы его вспомогательные API на основе Compose можно было использовать вне пользовательского интерфейса Compose. Его следует всегда использовать при работе с Compose UI 1.9.0-alpha02 и выше, но он обратно совместим, поэтому его можно использовать со всеми версиями Compose.
  • Расширения Kotlin savedstate-ktx теперь перемещены в базовый модуль savedstate.
  • Экземпляры SavedStateRegistryOwner полученные с помощью findViewTreeSavedStateRegistryOwner теперь могут быть разрешены через непересекающиеся родительские элементы представления, такие как ViewOverlay . Дополнительную информацию о непересекающихся родительских элементах представления см. в примечаниях к выпуску ядра или в документации по ViewTree.setViewTreeDisjointParent .

Kotlin Multiplatform

  • Модуль SavedState теперь совместим с KMP. Поддерживаемые платформы теперь включают Android, iOS, Linux, Mac и настольные среды JVM.
  • Введен непрозрачный тип SavedState в качестве абстракции для обеспечения согласованного способа сохранения и восстановления состояния приложения в KMP. Он включает SavedStateReader и SavedStateWriter для изменения сохраняемого состояния. На Android SavedState является псевдонимом типа для 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")
        }
    }
    
  • В версии Lifecycle 2.9.0 добавлен аналогичный делегат для saved свойства SavedStateHandle .

Версия 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-alpha11

26 марта 2025 г.

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

Версия 1.3.0-alpha10

12 марта 2025 г.

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

Новые функции

  • Добавить нереифицированные варианты методов для get коллекций в SavedStateReader . ( I0b641 , b/399820614 )
  • Добавить encodeDefaults в SavedStateConfiguration , позволяющий настраивать, следует ли кодировать свойства со значениями по умолчанию. ( I893cc , b/395104517 )
  • Добавлена ​​поддержка mutableStateMapOf в SnapshotStateMapSerializer . ( IE6F19 , b/378895074 )
  • Добавлена ​​поддержка mutableStateListOf в SnapshotStateListSerializer . ( 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-alpha09

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-alpha08

12 февраля 2025 г.

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

Новые функции

  • Переместить MutableStateSerializer из lifecycle-viewmodel-compose savedstate-compose 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-alpha07

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-alpha06

11 декабря 2024 г.

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

Новые функции

  • SavedState KMP теперь поддерживает: 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-alpha05

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 , был добавлен в версии Lifecycle 2.9.0-alpha07 .

Изменения в API

  • Добавить toMap к SavedState , что позволит преобразовать любой SavedState в обычную Map (поверхностную копию). ( I487b9 , b/334076622 )
  • Функция SavedState KMP теперь поддерживает массивы. ( Ic0552 , b/334076622 )

Версия 1.3.0-alpha04

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-alpha03

16 октября 2024 г.

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

Версия 1.3.0-alpha02

2 октября 2024 г.

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

Kotlin Multiplatform

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

Новые функции

  • Вводится непрозрачный тип SavedState в качестве абстракции для обеспечения согласованного способа сохранения и восстановления состояния приложения в KMP. Он включает SavedStateReader и SavedStateWriter для изменения сохраняемого состояния. На Android SavedState является псевдонимом типа для 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-alpha01

7 августа 2024 г.

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

Изменения в API

  • Расширения Kotlin savedstate-ktx теперь перемещены в базовый модуль savedstate. ( 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 содержит эти коммиты.

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

Версия 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 больше не сохраняет пустой 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 содержит эти коммиты.

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

  • Документация Kdocs 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 в View для androidx.savedstate.setViewTreeSavedStateRegistryOwner и androidx.savedstate.findViewTreeSavedStateRegistryOwner , чтобы установить и найти ранее установленного владельца. Это заменяет API savedstate-ktx класса findViewTreeSavedStateRegistryOwner . Это бинарно совместимо и остается совместимым с исходным кодом для реализаций, написанных на языке программирования Java. ( b/220191285 )

Версия 1.2.0-alpha02

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-alpha01

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

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 . ( aosp/1298679 )
  • Добавлен новый артефакт savedstate-ktx содержащий расширение Kotlin findViewTreeSavedStateRegistryOwner() для работы с 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-alpha02

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-alpha01

17 декабря 2018 г.

Это первый релиз SavedState .

Новые функции

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