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

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

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

Чтобы добавить зависимость от SavedState, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

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

Круто

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

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

Котлин

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

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

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

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

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

Создать новый выпуск

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

Версия 1.3

Версия 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 для предоставления сохранённого состояния по запросу системы.