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

Напишите подключаемые компоненты, которые сохраняют состояние пользовательского интерфейса при завершении процесса и восстанавливают его при перезапуске процесса.
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
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, из-за которой артефакты 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 и десктоп), 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 UI 1.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 для изменения сохраняемого состояния. В 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")
        }
    }
    
  • Аналогичный делегат saved свойства для SavedStateHandle добавлен в Lifecycle 2.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 содержит следующие коммиты .

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

  • 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-альфа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 добавлен в Lifecycle 2.9.0-alpha07 .

Изменения API

  • Добавить toMap к SavedState , что позволит преобразовать любой SavedState в обычную Map (поверхностную копию). ( I487b9 , b/334076622 )
  • SavedState KMP теперь поддерживает массивы. ( 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 для изменения сохраняемого состояния. В 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-альфа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 содержит эти коммиты.

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

Версия 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 содержит эти коммиты.

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

  • Документация 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 для установки и поиска ранее заданного владельца. Это заменяет API savedstate-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 : новый 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-альфа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 . ( 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-альфа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, из-за которой артефакты 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 и десктоп), 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 UI 1.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 для изменения сохраняемого состояния. В 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")
        }
    }
    
  • Аналогичный делегат saved свойства для SavedStateHandle добавлен в Lifecycle 2.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 JavaSerializableSerializer and ParcelableSerializer abstract ( I268f6 )
  • Remove generic T : CharSequence from CharSequenceSerializer ( 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 .

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

  • SavedState KMP now supports: IBinder , Size , SizeF , Array<Parcelable> , SparseArray<Parcelable> and Serializable (Android). ( I1ba94 , b/334076622 )
  • Add KSerializer instances 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 )
  • SavedStateRegistryOwner instances retrieved via findViewTreeSavedStateRegistryOwner can now be resolved through disjoint parents of a view, such as a ViewOverlay . See the release notes of core or the documentation in ViewTree.setViewTreeDisjointParent for 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

  • SavedState now includes KotlinX Serialization support. You can convert a class annotated with @Serializable to a SavedState using the methods encodeToSavedState and decodeFromSavedState . The returned SavedState is a regular Bundle on Android and can be used by any API that accepts a 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)
    }
    
  • We also have included saved , a lazy property delegate, to make it easy to store @Serializable classes in a SavedStateRegistryOwner (eg, ComponentActivity , Fragment , etc.) and have those classes automatically be restored across process death and recreation. Please note the saved delegate is lazy and will not call the init lambda or save anything into the SavedStateRegistry until 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 saved property delegate for SavedStateHandle added in Lifecycle 2.9.0-alpha07 .

API Changes

  • Add toMap to SavedState , allowing any SavedState to be converted to a regular Map (shallow copy). ( I487b9 , b/334076622 )
  • SavedState KMP 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

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 SavedState module is now KMP compatible. Supported platforms now include Android, iOS, Linux, Mac, and JVM desktop environments. ( I26305 , b/334076622 )

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

  • Introduce SavedState opaque type as an abstraction to provide a consistent way to save and restore application state in KMP. It includes a SavedStateReader and SavedStateWriter for modifying the state to be saved. On Android, SavedState is a type alias for Bundle , ensuring binary compatibility and facilitating the migration of existing APIs to a common source set. On other platforms, SavedState is a Map<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

  • SavedStateRegistry and SavedStateRegistryController are now KMP compatible. ( Id7bb8 , b/334076622 )
  • SavedState , SavedStateWriter and SavedStateReader are 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-ktx kotlin extensions have now been moved to the base savedstate module. ( I1cc18 , b/274803094 )

Примечание

  • Update compileSdk to 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

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

  • SavedStateRegistryController now allows early attachment of the SavedStateRegistry via performAttach() .
  • You can now retrieve a previously registered SavedStateProvider from a SavedStateRegistry via getSavedStateProvider() .
  • The SavedState library has been rewritten in Kotlin.
    • For SavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now override the savedStateRegistry property rather than implement the previous getSavedStateRegistry() 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 on View of androidx.savedstate.setViewTreeSavedStateRegistryOwner and androidx.savedstate.findViewTreeSavedStateRegistryOwner to set and find a previously set owner. This replaces the savedstate-ktx API of findViewTreeSavedStateRegistryOwner .

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

  • SavedStateRegistry no 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 SavedStateRegistryOwner Kdocs 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 on SavedStateRegistryController . ( 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 SavedStateRegistry and ViewTreeSavedStateRegistryOwner classes have been rewritten in Kotlin. 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 on View of androidx.savedstate.setViewTreeSavedStateRegistryOwner and androidx.savedstate.findViewTreeSavedStateRegistryOwner to set and find a previously set owner. This replaces the savedstate-ktx API of findViewTreeSavedStateRegistryOwner . 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 SavedStateProvider from a SavedStateRegistry via getSavedStateProvider() . ( I7ea47 , b/215406268 )

API Changes

  • The SavedStateRegistryOwner , SavedStateRegistryController , and Recreator classes have been rewritten in Kotlin. For SavedStateRegistryOwner , this is a source incompatible change for those classes written in Kotlin - you must now override the savedStateRegistry property rather than implement the previous getSavedStateRegistry() 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.

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

  • SavedStateRegistryController now allows early attachment of the SavedStateRegistry via performAttach() . ( Ice4bf )

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

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

  • ViewTreeSavedStateRegistryOwner API : A new ViewTreeSavedStateRegistryOwner.get(View) API allows you to retrieve the containing SavedStateRegistry given a View instance. You must upgrade to Activity 1.2.0 , Fragment 1.3.0 , and AppCompat 1.3.0-alpha01 or higher to populate this correctly.
  • savedstate-ktx artifact : The new savedstate-ktx artifact has been added with a findViewTreeSavedStateRegistryOwner() Kotlin extension for working with ViewTreeSavedStateRegistryOwner .

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.

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

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

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

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 method AutoRecreated.onRecreated will be run when the owning component restarted.

API changes

  • Generics removed from SavedStateRegistry<T>
  • AbstractSavedStateRegistry & BundlableSavedStateRegistry are removed, use simple SavedStateRegistry instead
  • BundleSavedStateRegistryOwner is renamed to SavedStateRegistryOwner

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.